一、应用场景

1.后台的java类,如实体类、List、Set、Map转成json字符串发送到前端或其他项目
2.前端或者其它项目发送过来的json字符串,需要解析成实体类、List、Set、Map等java类

二、依赖JAR包

json-lib包是可以将beans,collections,maps,arrays等类与XML和JSON格式相互转换的功能包。JSONObject和JSONArray的正常使用需要如下jar包:

1.commons-lang.jar

2.commons-beanutils.jar

3.commons-collections.jar

4.commons-logging.jar

5.ezmorph.jar

6.json-lib-XXX-jdk15.jar

JSONObject 在线API:http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.html

二、JSONObject和JSONArray的简单介绍

   

JSONObject常用方法:

accumulate(String key, Object value) :如果对象中已经存在key-value1对,该方法执行后key的value新值积累为                                                                        一个数组[value1,value]。

discard(String key):如果key值存在,删除对应的key-value.

element(String key, boolean value) :若对象中已经存在key-value对,该方法执行后value新值代替原先的value值.

fromBean(Object bean):静态方法,通过一个pojo对象创建一个JSONObject对象

fromJSONObject(JSONObject object):静态方法,通过另外一个JSONObject对象构造一个JSONObject对象

fromJSONString(JSONString string):静态方法,通过一个JSONString创建一个JSONObject对象

toString():把JSONObject对象转换为json格式的字符串

三、JSONObject类的简单使用

       // 创建一个空的JSONObject对象JSONObject json = new JSONObject();// accumulate方法, 附加key值后成为一个数组json.accumulate("key1", 5);json.accumulate("key1", "heloo");// 创建一个map对象Map<String, String> map = new HashMap<>();map.put("key3", "hello");map.put("key4", "system");// map值附加在json值后面json.accumulateAll(map);// element方法, 代替json.element("key2", 12);json.element("key2", "value2");// 构建更加复杂的jsonString strd = "{user:{userId:123566, uname:'jack', books:{book1:'spring', book2: 'springmvc'}}}";// 字符串转换为JSONObject对象JSONObject obj = JSONObject.fromObject(strd);// 再将obj添加到json对象中json.element("key23", obj);// 解析json对象String nn = json.getJSONObject("key23").getJSONObject("user").getString("uname");System.out.println(nn);

四、实体类和集合的序列化与反序列化

Student类:
public class Student {private String name;  private String gender;  private String address;  public String getName() {  return name;  }  public void setName(String name) {  this.name = name;  }  public String getGender() {  return gender;  }  public void setGender(String gender) {  this.gender = gender;  }  public String getAddress() {  return address;  }  public void setAddress(String address) {  this.address = address;  }
}

Class类:

public class Class {private String classNum;  private String className;  private String way;  private Student student;private List<Student> students;  public String getClassNum() {  return classNum;  }  public void setClassNum(String classNum) {  this.classNum = classNum;  }  public String getClassName() {  return className;  }  public void setClassName(String className) {  this.className = className;  }  public String getWay() {  return way;  }  public void setWay(String way) {  this.way = way;  }  public List<Student> getStudents() {  return students;  }  public void setStudents(List<Student> students) {  this.students = students;  }public Student getStudent() {return student;}public void setStudent(Student student) {this.student = student;}  }

序列化和反序列化过程:

public static void main(String[] args){Student st = new Student();st.setAddress("上海");st.setName("wanda");st.setGender("男");Student st1 = new Student();st1.setAddress("北京");st1.setName("youku");st1.setGender("女");Class cl = new Class();cl.setClassName("高三二班");cl.setClassNum("2334");cl.setStudent(st);List<Student> list = new ArrayList<Student>(); list.add(st);list.add(st1);cl.setStudents(list);// *************JSONObject对实体类进行序列化和反序列化********************************// 实体类的序列化:首先对实体类进行序列化成json格式数据,再转化为字符串,该字符串一般会发给前端/其他项目JSONObject job = JSONObject.fromObject(cl);String res = job.toString();System.out.println(res);// 实体类的反序列化:首先将json格式字符串转换为JSONObject对象JSONObject js = JSONObject.fromObject(res);// 再将JSONObject对象转换为实体类格式Class ne = (Class) JSONObject.toBean(js, Class.class);// 检测一下System.out.println(ne.getStudents().toString());// *************JSONArray对集合进行序列化和反序列化********************************// 对集合进行序列化:首先对集合进行序列化成JSONArray格式数据,再转化为字符串JSONArray ja = JSONArray.fromObject(list);String liststr = ja.toString();System.out.println(liststr);// 反序列化:如果集合存储的是bean类,需要指定class属性JSONArray ss = JSONArray.fromObject(liststr);Student[] s = (Student[]) JSONArray.toArray(ss, Student.class);System.out.println(s.toString());}

JSON解析之JSONObject与JSONArray的使用相关推荐

  1. fastjson 判断是否包含_Fastjson, Gson, org.json.JSON三者对于JSONObject及JSONArray的判断

    1.Fastjson 我们通常在已知格式的情况下直接使用JSONObject,JSONArray,但是如果遇到需要判断格式呢? try{ Object object=JSON.parse(a);if ...

  2. 判断字符串解析是JsonObject或者JsonArray

    如下,用 JSONTokener 实现: Object json = new JSONTokener(stringData).nextValue(); if(json instanceof JSONO ...

  3. java怎么判断json是否为空_java判断jsonObject和jsonArray是否为空

    resJsonObj = {"res":"0","msg":"","data":{"Nam ...

  4. Android Json解析与总结

    一.JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...

  5. android中json解析及使用(上)

    本文整理自:http://www.open-open.com/lib/view/open1326376799874.html 一.JSON的定义 JSON是一种轻量级的数据交换格式,具有良好的可读和便 ...

  6. 一个通用的Json解析框架接口设计(一)-接口设计

    我们项目中可能会用到许多的json框架,Fastjson.jackson.Gson.orgjson.json-lib,其实现方式各不相同,接口Api就不一样,我们想换一个json框架改动的地方就会很多 ...

  7. JSON的三种解析方式以及JSONObject、JSONArray区别

    JSON的常用两种解析方式 一.什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串 ...

  8. Json格式的解析,JsonObject、JSONArray

    1.将json字符串转成json格式 com.alibaba.fastjson.JSONObject object = JSONArray.parseObject(newJson); 2.根据属性获取 ...

  9. fastjson list转json字符串_程序员:JSON、JSONObject 与 JSONArray 简单讲解

    fastjson简介 fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 ...

最新文章

  1. 从原则、方案、策略及难点阐述分库分表
  2. Objective-C @property和@synthesize
  3. Python学习之score
  4. ADO.NET——二级联动 +ajax
  5. MariaDB 源码调试
  6. 小狗分类器,你家的狗子是个什么狗?
  7. Win7下WinDbg开启Local Kernel Debug调试
  8. 你能说出 Kafka 这些原理吗?
  9. JAVA 编码格式转换工具类
  10. Spring Boot (一)快速入门
  11. 学习WEB的心理路程
  12. iso硬盘安装 凤凰os_phoenix os安装全教程 凤凰系统进不去安装注意事项
  13. 工作两年前端经验分享
  14. MIUI 10 已连接 但无法访问互联网 的解决方案
  15. 为什么博客图片不显示?
  16. 离散型制造业数字化转型难点与转型方向
  17. 【奥黛丽赫本】女神一样的优雅
  18. 扁平和树形结构的几种互转
  19. Android 自定义控件之画篮球
  20. 嵌入式主板广泛的解决方案

热门文章

  1. CCS编译报错 error #10234-D: unresolved symbols remain
  2. 妈妈计算机英语怎么说,妈的用英语怎么说-妈妈英语怎么读?
  3. POI渲染Excel表格模板替换其中指定表格参数,以及Microsoft联机文档查看器遇到的坑
  4. 西电新时代网信院特色通信原理Assignment(自用)
  5. 【ELM预测】基于鲸鱼算法优化极限学习机实现数据回归预测附matlab代码
  6. oracle如何下载及安装,Oracle下载及安装超详细教程
  7. 皮尔逊相关系数矩阵热图 代码
  8. 五子棋的Java实现 详解
  9. mysql从库并行,MySQL 并行复制从库发生自动重启分析
  10. 15、Redis数据库