java中json重復數據結構_JAVA把各種數據結構轉換為JSON格式

Java代碼

import java.lang.reflect.Field;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import net.sf.json.JSONArray;

import com.hysoft.commons.test.User;

/************************************************************************

* JSON工具類

*

* @author cobra

* @see com.hysoft.commons.xml.JSONHelper

* @since jdk1.6

* @version version1.0

* @date 2010/09/03

*

************************************************************************/

public class JSONHelper {

/**

* 傳入一個簡單的List經過解析返回JSON

*

* @param list? 傳入參數list

*

* @return String 返回解析過后的JSON格式例如[{"abc"},{"edf"},{"xyz"}]

*/

public static String getJSONByList(List> list) {

StringBuffer buffer = new StringBuffer();

buffer.append("[{");

for (int i = 0; i < list.size(); i++) {

buffer.append("\"").append(list.get(i) != null ? list.get(i).toString() : "").append("\",");

}

return buffer.substring(0, buffer.length() - 1).concat("}]");

}

/**

* 傳入一個Map經過解析返回JSON

*

* @param map 傳入參數map

*

* @return String 返回解析過后的JSON格式例如[{"age","24","name","ty"}]

*/

@SuppressWarnings("unchecked")

public static String getJSONByMap(Map map) {

Iterator> iter = map.entrySet().iterator();

StringBuffer buffer = new StringBuffer();

buffer.append("[{");

while (iter.hasNext()) {

Map.Entry entry = (Map.Entry) iter.next();

buffer.append("\"").append(entry.getKey() != null ? entry.getKey() : "").append("\",").append("\"").append(entry.getValue() != null ? entry.getValue() : "").append("\",");

}

return buffer.substring(0, buffer.length() - 1).concat("}]");

}

/**

* 傳入一個List經過解析返回JSON

*

* @param list 傳入參數list

*

* @return String 返回解析過后的JSON格式例如[{"age","24","name","ty"},{"age","20","name","tt"}]

*/

public static String getJSONByBeanList(List> list) {

StringBuffer buffer = new StringBuffer();

try {

Class> clazz = list.get(0).getClass();

Field fields[] = clazz.getDeclaredFields();

buffer.append("[");

for (int i = 0; i < list.size(); i++) {

buffer.append("{");

for (int j = 0; j < fields.length; j++) {

String fieldName = fields[j].getName();

String firstLetter = fieldName.substring(0, 1).toUpperCase(); // 獲得和屬性對應的getXXX()方法的名字

String getMethodName = "get" + firstLetter + fieldName.substring(1); // 獲得和屬性對應的getXXX()方法的名字

Method getMethod = clazz.getMethod(getMethodName, new Class[] {}); // 獲得和屬性對應的getXXX()方法

Object value = getMethod.invoke(list.get(i), new Object[] {});

buffer.append("\"" + fieldName + "\":\"" + value + "\",");

}

buffer = new StringBuffer(buffer.substring(0, buffer.length()-1));

buffer.append("},");

}

} catch (SecurityException e) {

e.printStackTrace();

} catch (NoSuchMethodException e) {

e.printStackTrace();

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (InvocationTargetException e) {

e.printStackTrace();

}

return buffer.substring(0, buffer.length() - 1).concat("]");

}

/**

* 傳入一個Bean經過解析返回JSON

*

* @param object 傳入參數Bean

*

* @return String 返回解析過后的JSON格式例如[{"age","24","name","ty"}]

*/

public static String getJSONByBean(Object object) {

StringBuffer buffer = new StringBuffer();

try {

Class> clazz = object.getClass();

Field fields[] = clazz.getDeclaredFields();

buffer.append("[{");

for (int j = 0; j < fields.length; j++) {

String fieldName = fields[j].getName();

String firstLetter = fieldName.substring(0, 1).toUpperCase();

String getMethodName = "get" + firstLetter + fieldName.substring(1);

Method getMethod = clazz.getMethod(getMethodName, new Class[] {});

Object value = getMethod.invoke(object, new Object[] {});

buffer.append("\"" + fieldName + "\":\"" + value + "\",");

}

} catch (SecurityException e) {

e.printStackTrace();

} catch (NoSuchMethodException e) {

e.printStackTrace();

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (InvocationTargetException e) {

e.printStackTrace();

}

return buffer.substring(0, buffer.length() - 1).concat("}]");

}

public static String getXMLByJSON(Object object) {

return null;

}

public static void main(String[] args){

/**===========================================================================**/

List list = new ArrayList();

list.add("first");

list.add("second");

String jsonArray = JSONHelper.getJSONByList(list);

System.out.println(jsonArray);

/**===========================================================================**/

Map map = new HashMap();

map.put("name", "tianyuan");

map.put("age", "24");

String jsonMap = JSONHelper.getJSONByMap(map);

System.out.println(jsonMap);

/**===========================================================================**/

List list1 = new ArrayList();

User user0 = new User();

user0.setUsername("ty");

user0.setAge(24);

user0.setTel("137***");

user0.setAddress("南京");

list1.add(user0);

User user1 = new User();

user1.setUsername("tz");

user1.setAge(21);

user1.setTel("158***");

user1.setAddress("南京");

list1.add(user1);

String jsonList = JSONHelper.getJSONByBeanList(list1);

System.out.println(jsonList);

/**===========================================================================**/

User user2 = new User();

user2.setUsername("tianyuan");

user2.setAge(24);

user2.setTel("13770583115");

user2.setAddress("南京");

JSONArray jsonBean = JSONArray.fromObject(user0);

System.out.println(jsonBean);

}

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382996.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382996.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382996.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

字節字符區別Java_【JAVA基礎】字符數組與字節數組的區別

String.getBytes()和String.tocharArray()&#xff0c;字節數組和字符數組的區別String.getBytes()是將字符串轉化為一個字節數組。而String.toCharArray()是將一個字符串轉化為一個字符數組。【例如】byte bys[] “國慶60周年”.getBytes();char chs[]“國慶60周年”.toCharAr…

mysql日志管理_關于MySQL的日志管理(binlog)

關于MySQL的日志管理(binlog)一、查看binlog的啟用狀態最常用的mysql版本是5.7&#xff0c;默認不開啟binlog&#xff0c;可以在登錄mysql之后&#xff0c;利用以下命令查看當前的binlog啟用狀態&#xff1a;mysql show variables like "%log_bin%";圖中顯示“ON”&a…

java精確測量文本高度_基于文本精確計算UITableViewCell的高度

我正在開發一個ios應用程序&#xff0c;并使用autolayout我正在嘗試創建一個具有不同行高的表視圖 .原型單元的布局如下&#xff1a;我有一個主單元格(黑色)里面有一個UIView(紅色)&#xff0c;里面有一個UILabel(藍色)我添加的Autolayout約束如圖所示&#xff1a;The UIView h…

php做一個微信退款,PHP實現微信退款功能

大家好&#xff0c;我是小編&#xff0c;最近在調微信退款接口&#xff0c;發現有許多坑&#xff0c;更大家分享一下① 要是在測試的時候&#xff0c;網頁提示 curl 58 說明 證書的路徑出現問題(這里要填物理路徑&#xff0c;也就是絕對路徑)②網頁提示curl 52 說明你的證書引入…

php顯示時間,php實現用已經過去多長時間的方式顯示時間

本文實例講述了php用已經過去多長時間的方式顯示時間的方法。分享給大家供大家參考。具體如下&#xff1a;這里以一種可讀性比較好的方式顯示已經過去多長時間&#xff0c;比如&#xff1a;距離現在10秒&#xff0c;距離現在1天等等。function time_is_older_than($t, $check_t…

java中日期計算時間差,java中依據,兩個日期,計算時間差

java中根據&#xff0c;兩個日期&#xff0c;計算時間差。分別獲取兩個時間的毫秒數Date.getTime()&#xff0c;相減&#xff0c;得到的值/1000為秒數&#xff0c;/60*1000為分鐘數&#xff0c;/60*60*1000為小時數。/*** 計算時間差** param begin* param end* return*/public…

php獲取token失敗,微信開發,老是獲取token失敗

微信開發&#xff0c;總是獲取token失敗$appid wx1aabc8673b8f103a;$appsecret 9aa99fc9db9bf1321c1afe05feb29b6c;$url "https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&appid$appid&secret$appsecret";$urlhttps://api.weixin.…

2008下php上傳文件崩潰,php – 當用戶反復嘗試上傳無效文件類型時,網站崩潰

我試圖理解錯誤……我有一個允許用戶上傳CSV的網絡應用程序.如果文件類型不是CSV,則不會發生任何操作,頁面只顯示“無效的文件類型”.如果用戶嘗試上載無效的文件類型并反復單擊觸發處理上載的PHP文件的按鈕,則PHP文件最終會無響應,并且網站崩潰時出現以下錯誤&#xff1a;&quo…

java錯誤1601解決方法,求助解決錯誤

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)at …

java == hashcode,java中==和equals和hashCode的區別

java中和equals和hashCode的區別 的作用&#xff1a;基本類型&#xff1a;比較的就是值是否相同引用類型&#xff1a;比較的就是地址值是否相同(確切的說&#xff0c;是堆內存地址)equals 的作用:引用類型&#xff1a;默認情況下&#xff0c;比較的是地址值。public boolean eq…

java經典設計模式4,JAVA設計模式(4) 之裝飾設計模式

在現實生活中我們的汽車都具備跑的功能&#xff0c;我們可以不改變汽車原有功能的前提下&#xff0c;把它放入一個裝修廠&#xff0c;開進去讓里面給咱們的車子做一些裝飾&#xff0c;開出來之后呢&#xff0c;就具備了上天的功能了(技術可達是可以的哈)&#xff0c;這就給原來…

java讀取gxk文件,Java中常見的IO流及其使用

Java中IO流分成兩大類&#xff0c;一種是輸入流&#xff0c;所有的輸入流都直接或間接繼承自InputStream抽象類&#xff0c;輸入流作為數據的來源&#xff0c;我們可以通過輸入流的read方法讀取字節數據&#xff1b;另一種是輸出流&#xff0c;所有的輸出流都直接或間接繼承自O…

matlab+voronoin函數,在Voronoi區域中生成隨機點,并創建具有高維數據的Voronoi區域...

我正在使用k-means聚類算法&#xff0c;并且對于每個聚類質心&#xff0c;我試圖為質心生成n維Voronoi區域 . 之后我需要從Voronoi區域生成隨機點 .我已經嘗試使用Matlab / Octave和scipy來獲得n維Voronoi區域 . 但我有兩個問題 .生成頂點和區域后&#xff0c;如何從區域生成隨…

matlab雙縱軸刻度覆蓋問題,求助: matlab雙縱軸換圖問題

非常感謝&#xff01;不過&#xff0c;y2的范圍是-1*(10^6),7*(10^6),但是不等分:(把y1的范圍調成0.4:0.2:5.8也有28個元素&#xff0c;然后y2也有28個元素&#xff0c;但是不等分&#xff0c;是個曲線&#xff0c;而且&#xff0c;這個曲線的值與y1是有關的。數據見附件syms d…

php最新圖片漏洞,2018最新PHP漏洞利用技巧

本文學習了幾種新式的php exploit方法&#xff0c;在此做一筆記文件刪除漏洞, unlink()Phar 反序列化, file*()PHP對象實例化, ReflectionClass()0x01 WordPress Design Flaw Leads to WooCommerce RCEWooCommerce 3.4.6本版本之前存在任意刪除漏洞&#xff0c;因為WordPress的…

php v-for=,Vue中v-for循環節點的實現代碼

本篇文章給大家帶來的內容是關于Vue中v-for循環節點的實現代碼&#xff0c;有一定的參考價值&#xff0c;有需要的朋友可以參考一下&#xff0c;希望對你有所幫助。Title父循環第一次子循環第一次json數據的第幾條數值{{index}}{{indo}}{{bp.index}}{{bp.childName}}let ernew …

matlab尋找向量最小值,matlab – 在排序向量中快速搜索大于x的最小值

由于輸入已經排序,自定義二進制搜索應該有效(您可能需要對邊緣情況進行一些更新,即請求的值小于數組的所有元素)&#xff1a;function [result, res2] binarySearchExample(val)%// Generate example data and sort itN 100000000;a rand(N, 1);a sort(a);%// Run the algo…

搜matlab代碼的網站,LTE小區搜索matlab仿真

【實例簡介】LTE小區搜索過程的matlab仿真&#xff0c;比較詳細&#xff0c;內容不錯【實例截圖】【核心代碼】35738649matlab└── matlab├── Bc.m├── CellSearch.m├── PSS_detection_correction.m├── Tc.m├── absx2.m├── add_header_to_bin.m├── add_h…

php過氣了嗎,留幾手 留幾手過氣原因

1、很多時候&#xff0c;人們做事情只是為了自己&#xff0c;沒有任何理由&#xff0c;沒有任何結果&#xff0c;只是為了滿足一些內心的期望。2、太理智的人&#xff0c;往往愛到一半&#xff0c;本能地退卻。唯一突出的是他的JB。3、怎樣才能自由地睡去女文藝青年&#xff1f…

live2d PHP,Live2dHistoire_setting.php

if(!defined(EMLOG_ROOT)) {exit(error!);}function plugin_setting_view(){$live2d_setunserialize(ltrim(file_get_contents(dirname(__FILE__)./live2d.com.php),<?php die; ?>));?>KEY&#xff1a;音樂1&#xff1a;音樂2&#xff1a;音樂3&#xff1a;音樂4&a…