JSON 介绍org.json的使用

   在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别。

   org.json包是另一个用来beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.json.org/上有详细讲解 ,去官网下载json.org.jar

  

 具体使用如下:

实体类

public class Student {
	private String name;
	private String sex;
	private int age;
       .............
}

public class BuilderJSON {

	/**
	 * (3) 构造Json数据,包括一个list和一个含Student对象的Json数据
	 * @return
	 */
	public static String getListToJson() {

		// Student对象
		Student student = new Student("肥肥", "男", 25);

		// map对象
		Map<String, String> map = new HashMap<String, String>();
		map.put("name", "john");
		map.put("sex", "男");
		map.put("age", "20");

		Map<String, String> map1 = new HashMap<String, String>();
		map1.put("name", "zhang");
		map1.put("sex", "女");
		map1.put("age", "21");

		// List对象
		List<Map> list = new ArrayList<Map>();
		// 添加Map对象
		list.add(map);
		list.add(map1);
		

		// 构造Json数据,包括一个list和一个含Student对象的Json数据
		// JSON格式数据解析对象
		 JSONObject json = new JSONObject();
		 json.put("list", list);
		 json.put("stu", student);
		 System.out.println("\n最终构造的JSON数据格式:");
		 return json.toString();

	}

	/**
	 * (2)将Javabean->student转换为Json数据(需要Map中转)
	 * 
	 * 而org.json不能直接与bean相互转换而需要map作为中转,若将bean转为json数据,
	 * 首先需要先将bean转换为map再将map转为json,比较麻烦。
	 * 
	 * @param student
	 * @return
	 */
	private static String getJavaBeanToJsonObject() {
		// Student对象
		Student student = new Student("肥肥", "男", 25);

	
		// 将Javabean->student转换为Json数据(需要Map中转)
		Map maps = new HashMap();
		JSONObject jo = new JSONObject(student);
		Iterator<String> it = jo.keys();
		while (it.hasNext()) {
			String key = it.next();
			// 判断是否是整数型的
			if (key.equals("age")) {
				maps.put(key, jo.getInt(key));
			} else {
				maps.put(key, jo.getString(key));
			}

		}
		// 再次重新放入
		JSONObject jo1 = new JSONObject();
		jo1.put("stu", maps);
		System.out.println("仅含Student对象的Json数据格式:");
		return jo1.toString();
	}

	/**
	 * (1)将Map转换为JSONArray数据
	 * 
	 * @return
	 */
	private static String getMapToJSONArray() {
		// map对象
		Map<String, String> map = new HashMap<String, String>();
		map.put("name", "john");
		map.put("sex", "男");
		map.put("age", "20");

		Map<String, String> map1 = new HashMap<String, String>();
		map1.put("name", "zhang");
		map1.put("sex", "女");
		map1.put("age", "21");

		// 将Map转换为JSONArray数据
		JSONArray jsonArray = new JSONArray();
		jsonArray.put(map);
		jsonArray.put(map1);
		System.out.println("JSONArray对象数据格式:");
		return jsonArray.toString();
	}

	public static void main(String[] args) {
//		System.out.println(getListToJson());
//		System.out.println(getJavaBeanToJsonObject());
		System.out.println(getMapToJSONArray());
	}
}


 json-lib和org.json的使用几乎是相同的,我总结出的区别有两点:

      1. org.json比json-lib要轻量得多,前者没有依赖任何其他jar包,而后者要依赖ezmorph和commons的lang、logging、beanutils、collections等组件

      2. json-lib在构造bean和解析bean时比org.json要方便的多,json-lib可直接与bean互相转换,而org.json不能直接与bean相互转换而需要map作为中转,若将bean转为json数据,首先需要先将bean转换为map再将map转为json,比较麻烦。

      总之,适合自己的才是最好的,大家需选取使用哪种方法进行解析。

      在线工具JSONEdit(http://braincast.nl/samples/jsoneditor/);

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值