(四)json-lib包的使用

        既然json-lib包比org.json包重量级,那么json-lib包肯定有很多org.json包没有的类和方法,这篇笔记简单记录json-lib包中,json数据转换为java bean、Collection、java array等的方法。

1.json-lib包与org.json包

        ①org.json包比json-lib包要轻量级,不需要依赖各种工具包;
        ②将Java对象(beans, maps, collections, java arrays等)转换为json数据时,两者的功能差不多;
        ③同样拥有各种getXXX()和optXXX()方法等来解析json数据;
        ④json-lib包可直接将json数据转换为java bean、Collection、java array等

2.解析json对象

        沿用上篇笔记的Student类:
2.1 json数据转为bean类
例子:
 package jsonlib;
 import net.sf.json.*;
 public class JsonlibTest {
     public static void main(String[] args) {
         // 创建一个bean
         Student student = new Student();
         student.setName("JTZen9");
         student.setAge(21);
         student.setSex("male");
         // bean类转为json对象
         JSONObject jsonObject = JSONObject.fromObject(student);
         System.out.println(jsonObject);
         // 方法一,json对象转为bean类
         Student student2 = (Student) JSONObject.toBean(jsonObject, Student.class);
         System.out.println(student2.getName() + " " + student2.getAge() + " " + student2.getSex());
         // 方法二
         JsonConfig jsonConfig = new JsonConfig();
         jsonConfig.setRootClass(Student.class);
         Student student3 = (Student) JSONObject.toBean(jsonObject, jsonConfig);
         System.out.println(student3.getName() + " " + student3.getAge() + " " + student3.getSex());
     }
 }
输出结果:
2.2 json数据转为List类
例子:
 package jsonlib;
 import java.util.ArrayList;
 import java.util.List;
 import net.sf.json.*;
 public class JsonlibTest {
     public static void main(String[] args) {
         List<String> list = new ArrayList<>();
         list.add("JTZen9");
         list.add("heiheihei");
         list.add("DSMGYH");
         JSONArray jsonArray = JSONArray.fromObject(list);
         System.out.println(jsonArray);
         List<String> list2 = (List<String>) JSONArray.toList(jsonArray);
         System.out.println(list2.get(0) + " " + list2.get(1) + " " + list2.get(2));

         List<Student> listStudent = new ArrayList<>();
         for (int i = 0; i < 3; i++) {
             Student student = new Student();
             student.setName("JTZen9" + i);
             student.setAge(i);
             student.setSex("male");
             listStudent.add(student);
         }
         JSONArray sJsonArray = JSONArray.fromObject(listStudent);
         System.out.println(sJsonArray);
         // JSONArray转换为List<student>,方法一
         List<Student> sList1 = (List<Student>) JSONArray.toList(sJsonArray, Student.class);
         System.out.println(sList1.get(1).getAge());
         // 方法二
         JsonConfig jsonConfig = new JsonConfig();
         jsonConfig.setRootClass(Student.class);
         List<Student> sList2 = (List<Student>) JSONSerializer.toJava(sJsonArray, jsonConfig);
         System.out.println(sList2.get(1).getAge());
     }
 }
输出结果:

3.jsonConfig类

        jsonConfig类是帮助配置序列化过程的实用程序类,可以用它来在json和java对象转换过程中进行一些配置设置。
例如:当我们将一个java bean类转换为json对象时,往往会把bean类中所有的属性字段转为json对象的相应字段。如果我们要过滤掉bean类中的一些属性的时候呢,就可以使用jsonConfig类。
 package jsonlib;
 import net.sf.json.*;
 public class JsonlibTest {
     public static void main(String[] args) {
         Student student = new Student();
         student.setName("JTZen9");
         student.setSex("male");
         student.setAge(21);
         JSONObject jsonObject1 = JSONObject.fromObject(student);
         System.out.println(jsonObject1);   //正常输出三个字段

         JsonConfig jsonConfig = new JsonConfig();
         jsonConfig.setExcludes(new String[]{ "sex" });  //过滤要输出的字段
         JSONObject jsonObject2 = JSONObject.fromObject(student, jsonConfig);
         System.out.println(jsonObject2.toString());
     }
 }
输出结果如下(过滤了sex字段):
 
jsonConfig类还有很多其他的用法,以后用到的时候在继续完善。

4.结束语

json-lib包,比org.json包具有的功能要多,很多方法日后用到再记录。

        可以根据需求选择不同的工具包,org.json包比较轻量级,但实现的功能有限,如果只是简单的转换java对象为json数据,那么org.json包就足够了。

Java创建和解析Json数据方法(四)——json-lib包的使用的更多相关文章

  1. Java创建和解析Json数据方法——org.json包的使用(转)

    org.json包的使用 1.简介   工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookies, ...

  2. Java创建和解析Json数据方法(三)——json-lib包的使用

    (三)json-lib包的使用         这篇笔记主要介绍json-lib包的创建和解析json数据的方式,主要是的JSONObject.JSONArray和Java对象:beans, maps ...

  3. Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法

    前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...

  4. JS解析json数据并将json字符串转化为数组的实现方法

    json数据在ajax实现异步交互时起到了很重要的作用,他可以返回请求的数据,然后利用客户端的js进行解析,这一点体现出js的强大,本文介绍JS解析json数据并将json字符串转化为数组的实现方法, ...

  5. Jquery Ajax和getJSON获取后台普通Json数据和层级Json数据解析

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. JS:字符串转成json数据,和json转成字符串方法 iframe获取父级传过来的数据

    字符串转成json数据,和json转成字符串方法 //转为JSON adinfo=JSON.parse(adinfo) //转为字符串 adinfo=JSON.stringify(adinfo) 大概 ...

  7. 如何构建JSON数据,JSON数据的格式,JSON数据的获取

    假设你是用$.getJSON();方法获取JSON数据$.getJSON(url,{"Action":"getStudent"},function(data){ ...

  8. HttpServletResponse 返回的json数据不是json字符串,而是json对象

    今天在改一个bug 情况: 在spring boot中写了一个类Result ,用来统一封装 各个API响应结果 , 其中重写了toString()方法来返回 json字符串 . 在正常情况下,从其它 ...

  9. Java创建和解析Json数据方法(二)——org.json包的使用

    (二)org.json包的使用 1.简介   工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookie ...

随机推荐

  1. 第十四届华中科技大学程序设计竞赛决赛同步赛 Beautiful Land

    It’s universally acknowledged that there’re innumerable trees in the campus of HUST.Now HUST got a b ...

  2. 利用virt-manager,xmanager, xshell启动界面来管理虚拟机

    有时候我们需要搭建一套自己的简单环境来启动一个虚拟机,验证一些问题. 1.首先我利用vmware workstation来创建centos7虚拟机,然后开启虚拟化,如下图所示. 2.其次,启动虚拟机, ...

  3. 关于.net 项目 nuget包还原项目失败的记录

    在.net项目中,一般通过vs打开项目,会自动进行nuget包还原,可能因为其他一些因素,包还原失败,同时在之前包依赖是可以正常使用,现在却提示包 AutoMapper 6.2.2 与 netcore ...

  4. loj2021 「HNOI2017」大佬

    there #include <algorithm> #include <iostream> #include <cstring> #include <cst ...

  5. MySQL基本命令和常用数据库对象

    MySQL基本命令: 连接远程主机的MySQL服务(为了保证安全性,执行下面命令时,可以省略-p后面的密码,执行命令后系统会提示输入密码) mysql -p 密码 -u 用户名 -h 主机地址 --d ...

  6. Jmeter生成8位不重复的随机数

    jmeter的time函数${__time(,)}  :  默认该公式精确到毫秒级别, 13位数 ${__time(/1000,)}  : 该公式精确到秒级别, 10位数 ${__time(yyyy- ...

  7. “玲珑杯”ACM比赛 Round #23

    A -- 生是脂肪的人 Time Limit:2s Memory Limit:128MByte Submissions:263Solved:97 DESCRIPTION 给定一个整数n,输出[(10^ ...

  8. javascript学习笔记 - 引用类型 Date

    三 Date new Date() 在不传递参数的情况下,新创建的对象自动获得当前日期和时间.参数接收毫秒的timestamp Date.parse() 接收表示日期的字符串,返回相应的日期毫秒数ti ...

  9. 九度oj 题目1041:Simple Sorting

    题目描述: You are given an unsorted array of integer numbers. Your task is to sort this array and kill p ...

  10. 【转】深入理解JVM—JVM内存模型

    http://www.cnblogs.com/dingyingsi/p/3760447.html#3497199 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU ...