博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java后台 解析JSON的几个方法
阅读量:4877 次
发布时间:2019-06-11

本文共 8946 字,大约阅读时间需要 29 分钟。

1.对象转JSON对象。

public static void main(String[] args) {	Domain demo = new Domain(			"在线JSON校验格式化工具 —SOJSON在线工具(sojson.com)",			"http://www.sojson.com/",			"提供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.sojson.com/"}  */

  

2.Map<string,object>转JSON对象。

public static void main(String[] args) {	Map map = new HashMap();	map.put("title", "在线JSON校验格式化工具 —SOJSON在线工具(sojson.com)");	map.put("url", "http://www.sojson.com/");	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.sojson.com/"}  */

  

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.sojson.com * 创建日期 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); }

  

转载于:https://www.cnblogs.com/charlypage/p/8849652.html

你可能感兴趣的文章
世界上有10种软件公司:一种像工厂,另一种像电影摄制组
查看>>
ajax
查看>>
trick点
查看>>
zoj 3747 Attack on Titans dp 待补充
查看>>
串行通讯协议--起止式异步通讯协议(UART)
查看>>
[Noip2007] 字符串的展开
查看>>
Python09,条件控制
查看>>
POJ 1459 Power Network 最大流多源点多汇点。
查看>>
Resct配置less
查看>>
对网页图片的增删改管理
查看>>
POJ 3696 The Luckiest number
查看>>
设计模式之——观察者模式
查看>>
纯css制作带三角border篇(兼容所有浏览器)
查看>>
算法笔记_216:第六届蓝桥杯软件类校赛部分真题(Java语言C组)
查看>>
bulid tools
查看>>
git实用操作
查看>>
互联网地址
查看>>
函数的返回值
查看>>
遇到的问题
查看>>
搭建NDK环境
查看>>