简介:使用json-lib实现json的序列化和反序列化。
1.工具类代码:
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import java.util.ArrayList;
import java.util.List;
/**
* Created by admin on 2017/9/28.
* 使用json-lib实现json字符串和pojo对象的互相转换
*/
public class TestJsonLib {
public static class Student {
//姓名
private String name;
//年龄
private Integer age;
//住址
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", address="
+ address + "]";
}
}
//使用JSONObject将对象转成json对象格式字符串
public static String toJsonObject(Object obj) {
try {
return JSONObject.fromObject(obj).toString();
}catch (Exception e){
e.printStackTrace();
}
return null;
}
//使用JSONArray将对象转成数组对象格式字符串
public static String toJsonArray(Object obj) {
try {
return JSONArray.fromObject(obj).toString();
}catch (Exception e){
e.printStackTrace();
}
return null;
}
//使用JSONObject将对象格式字符串转成对象
public static <T> T fromJsonObject(String json, Class<T> clazz){
try {
return (T)JSONObject.toBean(JSONObject.fromObject(json),clazz);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//使用JSONArray将数组对象格式字符串转成对象
public static <T> T fromJsonArray(String json, Class<T> clazz){
try {
JSONArray jsonArray = JSONArray.fromObject(json);
return (T)JSONObject.toBean(jsonArray.getJSONObject(0),clazz);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//使用JSONArray将数组对象格式字符串转成ArrayList<T>对象
public static <T> ArrayList<T> readValuesAsArrayList(String json, Class<T> clazz){
try {
return (ArrayList<T>)JSONArray.toList(JSONArray.fromObject(json), clazz);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//使用JSONArray将数组对象格式字符串转成ArrayList<T>对象
public static <T> ArrayList<T> readValuesAsArrayList2(String json, T t){
try {
return (ArrayList<T>)JSONArray.toList(JSONArray.fromObject(json), t, new JsonConfig());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
Student stu=new Student();
stu.setName("abc");
stu.setAge(18);
stu.setAddress("北京");
String toJsonObject = toJsonObject(stu);
String toJsonArray = toJsonArray(stu);
System.out.println(toJsonObject);
System.out.println(toJsonArray);
Student fromJsonObject = fromJsonObject(toJsonObject,Student.class);
Student fromJsonArray = fromJsonArray(toJsonArray, Student.class);
System.out.println(fromJsonObject);
System.out.println(fromJsonArray);
String toJsonO = toJsonObject(null);
String toJsonA = toJsonArray(null);
Student s1 = fromJsonArray(null, Student.class);
Student s2 = fromJsonObject(null,Student.class);
System.out.println(toJsonO);
System.out.println(toJsonA);
System.out.println(s1);
System.out.println(s2);
List<Student> list = new ArrayList<>();
list.add(stu);
String listToJson = toJsonArray(list);
System.out.println(listToJson);
list = readValuesAsArrayList(listToJson,Student.class);
System.out.println(toJsonArray(list));
list = readValuesAsArrayList2(listToJson, new Student());
System.out.println(toJsonArray(list));
}
}