1、什么是JSON字符串?

我们在理解json的时候,不必要过分的扣json到底是哪几个字母的简称,要了解本质。

JSON的本质就是字符串,字符串几乎所有的系统都支持,所以json的兼容性好。

JSON就是一种数据的承载方式,可用户不同平台之间的数据交互类型,因为几乎所有的语言都支持JSON的创建和解析。

如:java是面向对象的,C是面向过程的,如何java发送一个对象给C,C就不能够识别什么是对象,或者识别的代价特别的大。

2、JSON字符串的格式?

简单的JSON字符串:{"key":"value","key":"value"......} 如:{"id":"1001","name":"晓春","sex":"男"}

json数组:[{"key":"value","key":"value"......},{},{}]

复杂的JSON字符串:值本身还是一个json字符串, 如:{"id":"1001","name":"晓春","sex":"男","hobby":{"hobby1":"游泳","hobby2":"打篮球"}},我们能够发现hobby对应的值依旧是一个json字符串({"hobby1":"游泳","hobby2":"打篮球"}),这种就是复杂的json字符串。

3、JSON字符串的解析方式?

我们使用官方提供的JSONArray与JSONObject

第一步:导入相关的包,包我放在了百度云盘中,可以通过如下地址下载

链接:https://pan.baidu.com/s/1FQ6pDlYzwmhmViXcN9PZ6Q
提取码:ocfz

第二步:创建如下复杂的json字符串

String  params="{'students':[{'stu_id':'1001','stu_name':'十一郎'},"+ "{'stu_id':'1002','stu_name':'十二郎'}],'flag':'1',"+ "'teacher':{'tea_id':'2001','tea_name':'晓春'}}";

说明:解析的时候会出现三种类型的数据,字符串类型的flag,Student对象和Teacher对象,所以需要创建Student对象和Teacher对象,具体创建如下:

第三步:创建Student和Teacher对象

说明:需要设置属性的set和get方法及有参数和无参数的构造器

public class Student {private String stu_id;private String stu_name;
public String getStu_id() {return stu_id;
}
public void setStu_id(String stu_id) {this.stu_id = stu_id;
}
public String getStu_name() {return stu_name;
}
public void setStu_name(String stu_name) {this.stu_name = stu_name;
}
public Student(String stu_id, String stu_name) {super();this.stu_id = stu_id;this.stu_name = stu_name;
}
public Student() {super();// TODO Auto-generated constructor stub
}}
public class Teacher {private String tea_id;private String tea_name;
public String getTea_id() {return tea_id;
}
public void setTea_id(String tea_id) {this.tea_id = tea_id;
}
public String getTea_name() {return tea_name;
}
public void setTea_name(String tea_name) {this.tea_name = tea_name;
}
public Teacher(String tea_id, String tea_name) {super();this.tea_id = tea_id;this.tea_name = tea_name;
}
public Teacher() {super();// TODO Auto-generated constructor stub
}}

第四步:具体解析步骤如下

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;public class Test {public static void main(String[] args) {//{"id":"1001","name":"晓春","sex":"男","hobby":{"hobby1":"游泳","hobby2":"打篮球"}}String  params="{'students':[{'stu_id':'1001','stu_name':'十一郎'},"+ "{'stu_id':'1002','stu_name':'十二郎'}],'flag':'1',"+ "'teacher':{'tea_id':'2001','tea_name':'晓春'}}";//通过fromObject将json字符串翻译成JSON对象(JSONObject)JSONObject jsonObject = JSONObject.fromObject(params);//假如返回值为简单的类型,也就是单个值,使用getString("key")获取String flag=jsonObject.getString("flag");//结果就是简单的值类型System.out.println("===flag值为==="+flag);//如果结果是一个json对象,使用getJSONObject("key")JSONObject teacherObject=jsonObject.getJSONObject("teacher");//通过toBean方法将json字符串翻译成java中的Teaher对象并打印出结果Teacher tea = (Teacher) JSONObject.toBean(teacherObject, Teacher.class);System.out.println("=====老师的名字====="+tea.getTea_name());//如果返回值为多个对象组成的json数组,使用getJSONArray("key")//上面的students类型就是json数组如:students:[{},{},{}]JSONArray studentsjsonArray = jsonObject.getJSONArray("students");//返回的是非单一的json对象//通过循环遍历数据for (int i=0;i<studentsjsonArray.length();i++) {//将获取的单个json字符串翻译成JSONObjectJSONObject a=JSONObject.fromObject(studentsjsonArray.get(i).toString());//将json对象翻译成Student对象Student stu = (Student) JSONObject.toBean(a, Student.class);//打印出学生的姓名System.out.println("=====学生姓名====="+stu.getStu_name());   }}
}

打印结果如下:

===flag值为===1
=====老师的名字=====晓春
=====学生姓名=====十一郎
=====学生姓名=====十二郎

4、其他解释

a、JSONArray常见方法

fromArray(Object[] array):通过一个array数组创建JSONArray对象

fromCollection(Collection collection):通过collection集合对象创建JSONArray对象

fromString(String string):通过一个json格式的字符串构造一个JSONArray对象

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

b、JSONObject常见方法

fromBean(Object bean):通过一个对象创建一个JSONObject对象

fromJSONObject(JSONObject object):通过另外一个JSONObject对象构造一个JSONObject对象

fromJSONString(JSONString string:通过一个JSONString创建一个JSONObject对象

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

java如何解析JSON字符串(复杂json解析详解)相关推荐

  1. Java解析json字符串和json数组

    Java解析json字符串和json数组 public static Map<String, String> getUploadTransactions(String json){Map& ...

  2. c#解析json字符串数组_C#解析JSON字符串总结

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

  3. 转js 将json字符串转换为json对象的方法解析

    将json字符串转换为json对象的方法.在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键 我的解决思路是: ...

  4. js 将json字符串转换为json对象的方法解析

    将json字符串转换为json对象的方法.在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键 例如: JSON ...

  5. 转:js 将json字符串转换为json对象的方法解析

    例如: JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; J ...

  6. JS/JavaScript中解析JSON --- JSON.parse()、JSON.stringify()以及$.parseJSON()使用详解

    JS/JavaScript中解析JSON --- JSON.parse().JSON.stringify()以及$.parseJSON()使用详解 现在JSON格式在web开发中非常重要,特别是在使用 ...

  7. json字符串转json对象(前端json字符串转json对象)

    小弟我如何把二进制data转换成json字符串 我举个例子,转json用的是fastjson,如附件.ArrayListobj=newArrayList();ArrayListuh=newArrayL ...

  8. Json字符串和Json对象的简单总结

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率). ...

  9. JSON | JSON字符串和JSON对象的区别

    最近在学习Vue.js,里面有个存储.读取本地缓存的功能,不停地用JSON.parse(),和JSON.stringify()来转换JSON字符串和JSON对象.自己有点晕,不明白两者的区别,看起来感 ...

  10. java读写json格式的文件方法详解.txt,并批量存储进redis

    捐躯赴国难,视死忽如归.恸哭六军俱缟素,冲冠一怒为红颜.君子坦荡荡,小人长戚戚.风日晴和人意好,夕阳箫鼓几船归.民为贵,社稷次之,君为轻.Java 读写json格式的文件方法详解 文章录入:7747. ...

最新文章

  1. 为什么要选择useState而不是useReducer
  2. 孩子在华艺舞校的画画投稿-天女之梦
  3. Python练习:五到七章的练习题
  4. C++之一个函数链的简单例子(分文件实现)
  5. mac 源码编译yar遇见的坑
  6. html余下的高度,html – 使第二行的弹性项目占据容器的剩余高度
  7. Linux安装IDA神器
  8. 无线传感网络定向扩散路由仿真matlab,确定性无线传感器网络定向扩散路由协议...
  9. Android,APP图标尺寸
  10. SkeyeVSS综合安防监控Onvif、RTSP、GB28181视频云解决方案之服务器系统硬件资源管理
  11. 数字逻辑——时序逻辑电路
  12. 虚拟机连不上网问题详解
  13. 受够了百度网盘?如何注册无限容量的Google Drive网盘
  14. grpc istio_在皮质数据湖中使用grpc envoy和istio进行大规模数据摄取
  15. [USACO17DEC]Greedy Gift Takers
  16. HTML5期末大作业:零食官网网站设计——美食零食官网(6页) html网页制作期末美食作业成品_小吃类网页设计期末作业
  17. xs128 D-Flash读写
  18. python用来初始化对象属性的是_猪行天下之Python基础——8.1 类与对象
  19. sql语句中where 1=1的作用
  20. pkcs5 padding和pkcs7 padding的区别

热门文章

  1. (附源码)基于SSM天天超市购物网站 毕业设计022101
  2. Go:有向图和无向图的结构实现 (附完整源码)
  3. RationalDMIS 2020 飞行(FLY)运动(FLY motion)
  4. Spring Boot 中的热部署方式总结
  5. 景联文科技提供自动驾驶路况信息采集服务
  6. chrome 删除厌烦的桔梗导航
  7. 学计算机一定懂电脑维修吗,电脑维修不求人教你自学电脑维修.doc
  8. 【PHY】关于学习以太网PHY的这件事情
  9. echarts3的简单实践(饼图、柱形图、折线图、地图+散点图)
  10. 本人全面的网吧母盘解决方案及全套软件URL