在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/);