本文使用json-lib jar包实现Json与bean的相互转换
1.将字符串转为JSON
使用JSONObject.fromObject(str)方法即可将字符串转为JSON对象
使用JSONObject.put("attribute","value")可为JSON添加属性
如果需要转为JSON数组,只需使用JSONArray对象提供的方法即可
/**
* 一些简单的转换
*/
public static void transformStringTest() {
String str = "{" + "\"id\":" + "\"1\"," + "\"name\":" + "\"zhangsan\""
+ "}";
//1.将字符串转为JSON
JSONObject jsonObj = JSONObject.fromObject(str);
System.out.println(jsonObj.toString());
//JSON添加属性
jsonObj.put("age", "22");
System.out.println(jsonObj.toString());
//2.将对象转为数组
JSONArray jsonArr = JSONArray.fromObject(jsonObj);
System.out.println(jsonArr.toString());
//3.将数组添加到JSON对象中
JSONObject obj = new JSONObject();
obj.put("employees", jsonArr);
System.out.println(obj.toString());
}
/* 输出内容
* {"id":"1","name":"zhangsan"}
* {"id":"1","name":"zhangsan","age":"22"}
* [{"id":"1","name":"zhangsan","age":"22"}]
* {"employees":[{"id":"1","name":"zhangsan","age":"22"}]}
*/
2.将对象转为JSON
首先创建People类
public class People {
private String name;
private String idcard;
public People() {
}
public People(String name, String idcard) {
this.name = name;
this.idcard = idcard;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIdcard() {
return idcard;
}
public void setIdcard(String idcard) {
this.idcard = idcard;
}
}
将对象转为JSON同样使用SONObject.fromObject(obj)方法
如果是一个List,转为JSON时需要使用JSONArray将对象转为JSON数组
public static void transformObjectTest() {
People p1 = new People("a", "111111");
//1.将对象转为json
System.out.println(JSONObject.fromObject(p1));
List peopleList = new ArrayList();
peopleList.add(p1);
//2.将list转为json(需要使用数组JSONArray)
JSONArray arr = JSONArray.fromObject(peopleList);
System.out.println(arr.toString());
}
/*输出内容
* {"idcard":"111111","name":"a"}
* [{"idcard":"111111","name":"a"}]
*/
3.JSON转为bean
json转为bean的方法也非常简单,只需使用JSONObject.toBean()方法即可,使用该方法的时候需要传入Bean的class
/**
* 将json转换为bean
* @param json
* @param type
* @return
*/
public static Object transformJsonToBean(String json, Class type) {
JSONObject jsonObject = JSONObject.fromObject(json);
return JSONObject.toBean(jsonObject, type);
}
4.JSON转为list
由于是集合,所以需要使用JSONArray,JSONArray提供了toCollection方法,使用该方法同样需要传入bean的class
public static Object transformJsonToBeanList(String jsonArr,
Class type) {
JSONArray jsonArray = JSONArray.fromObject(jsonArr);
return JSONArray.toCollection(jsonArray, type);
}
5.测试
public class Test {
public static void main(String[] args) {
//transformStringTest();
//transformObjectTest();
People p1 = new People("a", "111111");
String json = JSONObject.fromObject(p1).toString();
//将json转换为bean
People p = (People) transformJsonToBean(json, People.class);
System.out.println(p.getName());
System.out.println(p.getIdcard());
List peopleList = new ArrayList();
peopleList.add(p1);
JSONArray jsonArr = JSONArray.fromObject(peopleList);
//将json数组转为list
List list = (List) transformJsonToBeanList(
jsonArr.toString(), People.class);
System.out.println(list.size());
}
代码下载:http://download.csdn.net/detail/lom9357bye/9690304