在JAVA类中使用JSON

Java与JSON互转实战
本文详细介绍如何在Java中实现对象及集合与JSON之间的相互转换,包括所需第三方库的引入及常见错误解决方法。

上一篇我们对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对象的互相嵌套

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值