一、如何使用json-lib这个工具包来完成Java对象(或集合)与json对象(或集合)之间的转换
1. Java对象转换成json(既创建json)
关键类:JSONObject jsonObject = JSONObject.from(Object obj);
使用说明:只要将Java对象传入方法,那么便可以得到JSONObject,然后你便可以直接json.toString();输出json
例子:
@Test
public void testCreateJson() throws Exception {
Employee employee = new Employee("zhangSan", "12");
JSONObject jsonObject = JSONObject.fromObject(employee);
System.out.println(jsonObject.toString());
}
输出结果:
{"age":"12","name":"zhangSan"}
由上面的输出结果可以看出,JSONObject输出的json对象的属性之间的顺序是无序的~
2. 字符串转换成Java对象(既解析json)
关键类:JSONObject json = new JSONObject(String jsonString);
json.get(String key);
//根据key来获取值。key对Java对象来说就是属性名,value就是属性值
使用说明:首先将json字符串传入JSONObject对象的构造函数中,得到一个JSONObject对象,再通过该对象进行获取相应的数据,从而构造出一个Java对象。
例子:
@Test
public void testParseJson(){
String jsonString = "{\"age\":\"12\",\"name\":\"zhangSan\"}";
JSONObject json = new JSONObject().fromObject(jsonString);
System.out.println(json.get("name"));
System.out.println(json.get("age"));
}
输出结果:
zhangSan
12
附录:Employee代码的具体实现
public class Employee {
private String name;
private String age;
public String getName() {
return name;
}
public String getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(String age) {
this.age = age;
}
public Employee(String name, String age) {
super();
this.name = name;
this.age = age;
}
public Employee() {
super();
}
@Override
public String toString() {
return "[name="+name+",age="+age+"]";
}
}
3.Java集合转换成Json集合
关键类:JSONArray jsonArray = JSONArray.fromObject(Object obj);
使用说明:将Java集合对象直接传进JSONArray.fromObject()中,得到一个JSONArray集合,再直接使用JSONArray的toString()方法,便可得到json集合
示例代码:
@Test
public void testCreateJsonArray() {
//Java集合
List<Employee> list = new ArrayList<Employee>();
list.add(new Employee("zhangSan","13"));
list.add(new Employee("liSi","14"));
//创建json集合
JSONArray jsonArray = JSONArray.fromObject(list);
System.out.println(jsonArray.toString());
}
输出结果:
[{"age":"13","name":"zhangSan"},{"age":"14","name":"liSi"}]
4、 Json集合转换成Java集合
关键类: JSONArray jsonArray = JSONArray.fromObject(Object obj);
使用说明:将json字符串对象传入,便可得到一个JSONArray对象,再调用JSONArray对象的toCollection(JSONArray jsonArray, Class clss)方法,便可得到一个Java对象的集合。
示例代码:
@Test
public void testParseJsonArray() {
//json集合
String jsonString = "[{\"age\":\"13\",\"name\":\"zhangSan\"},{\"age\":\"14\",\"name\":\"liSi\"}]";
JSONArray jsonArray = JSONArray.fromObject(jsonString);
//Java集合
List list = (List) jsonArray.toCollection(jsonArray, Employee.class);
for(Employee employee : list){
System.out.println(employee);
}
}
]
输出结果:
[name=zhangSan,age=13]
[name=liSi,age=14]
二、使用com.alibaba.fastjson这个工具包来完成Java对象(或集合)与json对象(或集合)之间的转换