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

JSON 2016-08-22 23:57:07 128656

这是我之前发布的一篇文章。发现在其他的地方下载不了相关的包。故再次整理了一下。

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包下载:https://www.sojson.com/blog/101.html

代码使用Demo:

1.对象转JSON对象。

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

2.Map转JSON对象。

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


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/20.html

转载时必须以链接形式注明原始出处及本声明。


附件下载:

备注:点击文件名下载,附件源来自云端,只能在本站下载。复制下载链接无效。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
json-lib 的 maven dependency 引入及Jar包下载
json-lib-2.4-jdk15.jar使用详解
json 解析与生成工具类 ,JSON操作讲解(附件)
如何解析JSON数据(详细解答)
SOJSON动态云端加,HTML5页面源码(下载),SOJSON特效
HTMLJSON如何互转
Java tojson,Javajson-lib的各种数据转换,及对象转换
SOJSON首页的圣诞雪花特效,特效分享,雪花特效下载
java json字符串转json对象
JSON格式讲解,JSON获取对象,JSONObjectJSONArray的操作
最新文章
PHP变量剖析 11
SQL全外连接剖析 119
SQL自然连接剖析 147
springboot启动原理 245
SQL右连接【RIGHT JOIN】详解及图解 450
SQL左链接【LEFT JOIN】详解及图解 357
SQL非等值连接剖析 262
SQL等链接剖析 291
SQL内连接详解及图解 385
python之numpy常用的100种数值相关方法及代码示例 231
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 679241
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 674561
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 599031
免费天气API,天气JSON API,不限次数获取十五天的天气预报 565278
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 551715
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 509186
Elasticsearch教程(四) elasticsearch head 插件安装和使用 479645
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 262820
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244092
Elasticsearch教程(一),全程直播(小白级别) 225127
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...