上一篇我们对Json做了一个基本的介绍,这篇我们将对Json在JAVA类中的使用做一个介绍
下面我们来介绍java中Json的两种使用方式
- java对象与json的转化
- java集合类与json的转化
首先需要导入第三方jar包
json-lib-2.3-jdk15.jar
commons-beanutils-1.7.0.jar
commons-httpclient-3.1.jar
commons-lang-2.3.jar
commons-logging-1.0.4.jar
commons-collections-3.1.jar
ezmorph-1.0.3.jar
缺少jar包导致常见错误信息:
commons-beanutils-1.8.0.jar不加这个包
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean
commons-collections.jar 不加这个包
java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap
commons-lang-2.4.jar不加这个包
java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
commons-logging-1.1.1.jar不加这个包
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
ezmorph-1.0.4.jar不加这个包
java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher
json-lib-2.3-jdk15.jar不加这个包
java.lang.NoClassDefFoundError: net/sf/json/JSONObject
java对象转化为json文本
// 创建java对象
Student s = new Student(21, "张三", "北京");
// 转化为json对象
JSONObject jo = JSONObject.fromObject(s);
// 转化为json文本
String jsontxt = jo.toString();
System.out.println(jsontxt);
输出结果:
{“address”:”北京”,”name”:”张三”,”age”:21}
java文本转化为json对象
//json文本
String jsonTxt = "{\"age\":22,\"name\":\"李四\",\"address\":\"北京\"}";
//转化Json对象
JSONObject jsonObj =JSONObject.fromObject(jsonTxt);
//转化Java对象
Student s = (Student) JSONObject.toBean(jsonObj, Student.class);
System.out.println(s.getAddress()+s.getAge()+s.getName());
输出:北京22李四
问题描述:
Exception in thread “main” net.sf.json.JSONException: java.lang.NoSuchMethodException: com.shinerio.json.Student.()
域模型类(student)没有无参构造方法
Java集合转化为json文本
ArrayList<Student> list = new ArrayList<Student>();
list.add(new Student(18,"蓝瘦","云南"));
list.add(new Student(28,"香菇","山东"));
JSONArray ja = JSONArray.fromObject(list);
String jsonTxt = ja.toString();
System.out.println(jsonTxt);
输出:[{“address”:”云南”,”name”:”蓝瘦”,”age”:18},{“address”:”山东”,”name”:”香菇”,”age”:28}]
Json文本转化为Java集合
String jsonTxt = "[{\"address\":\"云南\",\"name\":\"蓝瘦\",\"age\":18},"
+ "{\"address\":\"山东\",\"name\":\"香菇\",\"age\":28}]";
JSONArray ja = JSONArray.fromObject(jsonTxt);
ArrayList<Student> s = (ArrayList<Student>) JSONArray.toCollection(ja,Student.class);
for (Student student : s) {
System.out.println(student.getAddress());
}
输出:
云南
山东
JsonConfig
在进行转换时配置的对象。
jsonConfig.setExcludes(new String[]{“goodsList”}); 表示不包含字符串数组中属性。可以用来防止json对象的互相嵌套