Java 解析JSON,JSON-LIB jar包下載和使用。

soゝso 2016-08-22 23:57:07 78419

這是我之前發布的一篇文章。發現在其他的地方下載不了相關的包。故再次整理了一下。

Java jar包下載:

Json-lib  的所有依賴Jar包單獨下載。

  1. commons-lang-2.5.jar:點擊下載commons-lang-2.5.jar
  2. commons-beanutils-1.8.0.jar:點擊下載commons-beanutils-1.8.0.jar
  3. commons-collections-3.2.jar:點擊下載commons-collections-3.2.1.jar
  4. commons-logging-1.1.1.jar:點擊下載commons-logging-1.1.1.jar
  5. ezmorph-1.0.6.jar:點擊下載ezmorph-1.0.6.jar
  6. JSON  工具在線解析:JSON在線工具

json-lib  的  maven  dependency 引入及Jar包下載:http://www.380127.tw/blog/101.html

代碼使用Demo:

1.對象轉JSON對象。

public static void main(String[] args) {
	Domain demo = new Domain(
			"在線JSON校驗格式化工具 —SOJSON在線工具(sojson.com)",
			"http://www.380127.tw/",
			"提供json在線格式化,json在線格式化工具,json 格式化輸出,json格式化 空串,json 格式化插件,json字符串格式化,json視圖,json 在線驗證,json 在線查看器。");

	String objectToJSON = objectToJSON(demo);
	System.out.println(objectToJSON);
	
}

public static String objectToJSON(Domain demo) {
	return JSONObject.fromObject(demo).toString();
}
/**
 * 結果輸出:
 
 {
    "description": "提供json在線格式化,json在線格式化工具,json 格式化輸出,json格式化 空串,json 格式化插件,json字符串格式化,json視圖,json 在線驗證,json 在線查看器。",
    "title": "在線JSON校驗格式化工具 —SOJSON在線工具(sojson.com)",
    "url": "http://www.380127.tw/"
}
 
 */

2.Map轉JSON對象。

public static void main(String[] args) {
	Map map = new HashMap();
	map.put("title", "在線JSON校驗格式化工具 —SOJSON在線工具(sojson.com)");
	map.put("url", "http://www.380127.tw/");
	map.put("description", "提供json在線格式化,json在線格式化工具,json 格式化輸出,json格式化 空串,json 格式化插件,json字符串格式化,json視圖,json 在線驗證,json 在線查看器。");

	String objectToJSON = mapToJSON(map);
	System.out.println(objectToJSON);
	
}

public static String mapToJSON(Map map) {
	return JSONObject.fromObject(map).toString();
}
/**
 * 結果輸出:
 {
    "description": "提供json在線格式化,json在線格式化工具,json 格式化輸出,json格式化 空串,json 格式化插件,json字符串格式化,json視圖,json 在線驗證,json 在線查看器。",
    "title": "在線JSON校驗格式化工具 —SOJSON在線工具(sojson.com)",
    "url": "http://www.380127.tw/"
}
 
 */

3.對象和JSON之間的轉換(JsonUtil)。

package snippet;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import net.sf.ezmorph.object.DateMorpher;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsDateJsonValueProcessor;
import net.sf.json.util.JSONUtils;

public class JsonUtil {

	/** 頁面傳至后臺時,json數據在request的參數名稱 */
public final static String JSON_ATTRIBUTE = "json";
public final static String JSON_ATTRIBUTE1 = "json1";
public final static String JSON_ATTRIBUTE2 = "json2";
public final static String JSON_ATTRIBUTE3 = "json3";
public final static String JSON_ATTRIBUTE4 = "json4";

/**
 * 從一個JSON 對象字符格式中得到一個java對象,形如: {"id" : idValue, "name" : nameValue,
 * "aBean" : {"aBeanId" : aBeanIdValue, ...}}
 * 
 * @param object
 * @param clazz
 * @return
 */
public static Object getDTO(String jsonString, Class clazz) {
	JSONObject jsonObject = null;
	try {
		setDataFormat2JAVA();
		jsonObject = JSONObject.fromObject(jsonString);
	} catch (Exception e) {
		e.printStackTrace();
	}
	return JSONObject.toBean(jsonObject, clazz);
}

/**
 * 從一個JSON 對象字符格式中得到一個java對象,其中beansList是一類的集合,形如: {"id" : idValue, "name" :
 * nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}, beansList:[{}, {},
 * ...]}
 * 
 * @param jsonString
 * @param clazz
 * @param map
 *            集合屬性的類型 (key : 集合屬性名, value : 集合屬性類型class) eg: ("beansList" :
 *            Bean.class)
 * @return
 */
public static Object getDTO(String jsonString, Class clazz, Map map) {
	JSONObject jsonObject = null;
	try {
		setDataFormat2JAVA();
		jsonObject = JSONObject.fromObject(jsonString);
	} catch (Exception e) {
		e.printStackTrace();
	}
	return JSONObject.toBean(jsonObject, clazz, map);
}

/**
 * 從一個JSON數組得到一個java對象數組,形如: [{"id" : idValue, "name" : nameValue}, {"id" :
 * idValue, "name" : nameValue}, ...]
 * 
 * @param object
 * @param clazz
 * @return
 */
public static Object[] getDTOArray(String jsonString, Class clazz) {
	setDataFormat2JAVA();
	JSONArray array = JSONArray.fromObject(jsonString);
	Object[] obj = new Object[array.size()];
	for (int i = 0; i < array.size(); i++) {
		JSONObject jsonObject = array.getJSONObject(i);
		obj[i] = JSONObject.toBean(jsonObject, clazz);
	}
	return obj;
}

/**
 * 從一個JSON數組得到一個java對象數組,形如: [{"id" : idValue, "name" : nameValue}, {"id" :
 * idValue, "name" : nameValue}, ...]
 * 
 * @param object
 * @param clazz
 * @param map
 * @return
 */
public static Object[] getDTOArray(String jsonString, Class clazz, Map map) {
	setDataFormat2JAVA();
	JSONArray array = JSONArray.fromObject(jsonString);
	Object[] obj = new Object[array.size()];
	for (int i = 0; i < array.size(); i++) {
		JSONObject jsonObject = array.getJSONObject(i);
		obj[i] = JSONObject.toBean(jsonObject, clazz, map);
	}
	return obj;
}

/**
 * 從一個JSON數組得到一個java對象集合
 * 
 * @param object
 * @param clazz
 * @return
 */
public static List getDTOList(String jsonString, Class clazz) {
	setDataFormat2JAVA();
	JSONArray array = JSONArray.fromObject(jsonString);
	List list = new ArrayList();
	for (Iterator iter = array.iterator(); iter.hasNext();) {
		JSONObject jsonObject = (JSONObject) iter.next();
		list.add(JSONObject.toBean(jsonObject, clazz));
	}
	return list;
}

/**
 * 從一個JSON數組得到一個java對象集合,其中對象中包含有集合屬性
 * 
 * @param object
 * @param clazz
 * @param map
 *            集合屬性的類型
 * @return
 */
public static List getDTOList(String jsonString, Class clazz, Map map) {
	setDataFormat2JAVA();
	JSONArray array = JSONArray.fromObject(jsonString);
	List list = new ArrayList();
	for (Iterator iter = array.iterator(); iter.hasNext();) {
		JSONObject jsonObject = (JSONObject) iter.next();
		list.add(JSONObject.toBean(jsonObject, clazz, map));
	}
	return list;
}

/**
 * 從json HASH表達式中獲取一個map,該map支持嵌套功能 形如:{"id" : "johncon", "name" : "小強"}
 * 注意commons
 * -collections版本,必須包含org.apache.commons.collections.map.MultiKeyMap
 * 
 * @param object
 * @return
 */
public static Map getMapFromJson(String jsonString) {
	setDataFormat2JAVA();
	JSONObject jsonObject = JSONObject.fromObject(jsonString);
	Map map = new HashMap();
	for (Iterator iter = jsonObject.keys(); iter.hasNext();) {
		String key = (String) iter.next();
		map.put(key, jsonObject.get(key));
	}
	return map;
}

/**
 * 從json數組中得到相應java數組 json形如:["123", "456"]
 * 
 * @param jsonString
 * @return
 */
public static Object[] getObjectArrayFromJson(String jsonString) {
	JSONArray jsonArray = JSONArray.fromObject(jsonString);
	return jsonArray.toArray();
}

/**
 * 把數據對象轉換成json字符串 DTO對象形如:{"id" : idValue, "name" : nameValue, ...}
 * 數組對象形如:[{}, {}, {}, ...] map對象形如:{key1 : {"id" : idValue, "name" :
 * nameValue, ...}, key2 : {}, ...}
 * 
 * @param object
 * @return
 */
public static String getJSONString(Object object) throws Exception {
	String jsonString = null;
	// 日期值處理器
	JsonConfig jsonConfig = new JsonConfig();
	jsonConfig.registerJsonValueProcessor(java.util.Date.class,
			new JsonDateValueProcessor());
	if (object != null) {
		if (object instanceof Collection || object instanceof Object[]) {
			jsonString = JSONArray.fromObject(object, jsonConfig)
					.toString();
		} else {
			jsonString = JSONObject.fromObject(object, jsonConfig)
					.toString();
		}
	}
	return jsonString == null ? "{}" : jsonString;
}

private static void setDataFormat2JAVA() {
	// 設定日期轉換格式
	JSONUtils.getMorpherRegistry().registerMorpher(
			new DateMorpher(new String[] { "yyyy-MM-dd",
					"yyyy-MM-dd HH:mm:ss" }));
}

public static void main(String[] arg) throws Exception {
	String s = "{status : 'success'}";
	System.out.println(" object : " + JsonUtil.getJSONString(s));
	}
}

4.日期處理類

package snippet;

import java.text.SimpleDateFormat;
import java.util.Date;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

/*
 * @author www.380127.tw
 * 創建日期 2008-9-10
 * json日期值處理器
 */
public class JsonDateValueProcessor implements JsonValueProcessor {

	private String format = "yyyy-MM-dd HH:mm:ss";

	public static void main(String[] args) {
		// 三解析如下例子
		String rowidString = "[{\"kl_id\":\"2\",\"kl_title\":\"Test date\",\"kl_content\":\"Test date\",\"kl_type\":\"1\",\"id\":\"1\"},{\"kl_id\":\"2\",\"kl_title\":\"Test\",\"kl_content\":\"Test\",\"kl_type\":\"1\",\"id\":\"2\"}]";

		JSONArray array = JSONArray.fromObject(rowidString);
		Object[] obj = new Object[array.size()];
		for (int i = 0; i < array.size(); i++) {
			JSONObject jsonObject = array.getJSONObject(i);
			System.out.println(jsonObject.get("kl_id"));

		}
	}

	public JsonDateValueProcessor() {

	}

	public JsonDateValueProcessor(String format) {
		this.format = format;
	}

	public Object processArrayValue(Object value, JsonConfig jsonConfig) {
		return process(value, jsonConfig);
	}

	public Object processObjectValue(String key, Object value,
			JsonConfig jsonConfig) {
		return process(value, jsonConfig);
	}

	private Object process(Object value, JsonConfig jsonConfig) {
		if (value instanceof Date) {
			String str = new SimpleDateFormat(format).format((Date) value);
			return str;
		}
		return value == null ? null : value.toString();
	}

	public String getFormat() {
		return format;
	}

	public void setFormat(String format) {
		this.format = format;
	}

}

PS:

public static void main(String[] args) {
	//對于對象中有明確類型的對象屬性,可不管;但對象中有集合屬性的,由于類型不明確,所以要先明確類型:
	String jsonString = request.getParameter("json");
	//增加對象中的集合屬性的類型以及對象元素中的對象屬性的集合屬性的類型
	Map clazzMap = new HashMap();
	//secondItems是FirstDTO里的集合屬性
	clazzMap.put("secondItems", SecondDTO.class);
	//thirdItems是SecondDTO里的集合屬性
	clazzMap.put("thirdItems", ThirdDTO.class);
	FirstDTO firstDTO = (FirstDTO)JsonUtil.getDTO(jsonString, FirstDTO.class, clazzMap); 
}


版權所屬:SO JSON在線解析

原文地址:http://www.380127.tw/blog/20.html

轉載時必須以鏈接形式注明原始出處及本聲明。


附件下載:

備注:點擊文件名下載,附件源來自云端,只能在本站下載。復制下載鏈接無效。

本文主題:

如果本文對你有幫助,那么請你贊助我,讓我更有激情的寫下去,幫助更多的人。

關于作者
一個低調而悶騷的男人。
相關文章
json-lib 的 maven dependency 引入及Jar包下載
json 解析與生成工具類 ,JSON操作講解(附件)
SOJSON動態云端加,HTML5頁面源碼(下載),SOJSON特效
七牛SDK下載地址大全,七牛Java Jar包在線下載
對Log4j 日志工具類的封裝,java LoggerUtils查看下載
Java tojson,Javajson-lib的各種數據轉換,及對象轉換
SOJSON首頁的圣誕雪花特效,特效分享,雪花特效下載
sojson 特效,本站頁面“線條”HTML5實現講解、特效代碼下載
JSON格式講解,JSON獲取對象,JSONObjectJSONArray的操作
Java 完美解析.plist & 生成plist ,Android 解析.plist
最新文章
QUIC / HTTP3 協議詳細分析講解 1163
恭喜那個做云存儲的七牛云完成 F 輪 10 億人民幣的融資,開啟新的云旅程 1838
Autojs怎么安全加密?Autojs在線加密工具注意事項。 2744
Java JSON 組件選型之 FastJson 為什么總有漏洞? 8357
使用七牛云存儲實現圖片API,自動刪除圖片方案合集 2485
神速ICP備案經驗分享,ICP備案居然一天就通過了 3871
百度加強推送URL鏈接,百度SEO強行推送鏈接JavaScript代碼案例講解。 4097
SOJSON 拓展服務器被DDos攻擊了一晚上,是如何解決的? 4842
湖南地區備案“新增網站需提交組網方案或解釋說明”,關于備案做簡單敘述 5177
企查查你是個什么企業,騙子的幫兇,詐騙的集中營,通過企查查騷擾企業電話不斷,為所欲為的企查查 11992
最熱文章
蘋果電腦Mac怎么恢復出廠系統?蘋果系統怎么重裝系統? 465125
我為什么要選擇RabbitMQ ,RabbitMQ簡介,各種MQ選型對比 433286
免費天氣API,全國天氣 JSON API接口,可以獲取五天的天氣預報 364418
最新MyEclipse8.5注冊碼,有效期到2020年 (已經更新) 357004
免費天氣API,天氣JSON API,不限次數獲取十五天的天氣預報 321558
Elasticsearch教程(四) elasticsearch head 插件安裝和使用 239220
Jackson 時間格式化,時間注解 @JsonFormat 用法、時差問題說明 203574
談談斐訊路由器劫持,你用斐訊路由器,你需要知道的事情 147012
Elasticsearch教程(一),全程直播(小白級別) 127553
Java 信任所有SSL證書,HTTPS請求拋錯,忽略證書請求完美解決 105343

騷碼加入我們 / 千人QQ群:259217951

入群需要5元為的是沒有垃圾廣告,如果沒有QQ錢包,可以加群主拉進。

二維碼生成 來自 >> 二維碼生成器。

支付掃碼

所有贊助/開支都講公開明細,用于網站維護:贊助名單查看

查看我的收藏

正在加載... ...

时时乐上海走势图连线