用JSONObject解析和处理json数据
本文中主要介绍JSONObject处理json数据时候的一些常用场景和方法。
(一)jar包下载
所需jar包打包下载百度网盘地址:https://pan.baidu.com/s/1c27Uyre
(二)常见场景及处理方法
1、解析简单的json字符串:
1 // 简单的json测试字符串 2 public static final String JSON_SIMPLE = "{'name':'tom','age':16}"; 3 4 JSONObject obj = JSONObject.fromObject(JSON_SIMPLE); 5 System.out.println("name is : " + obj.get("name")); 6 System.out.println("age is : " + obj.get("age"));
输出:
name is : tom
age is : 16
2、解析嵌套的json字符串:
![](/assets/blank.gif)
1 // 嵌套的json字符串 2 public static final String JSON_MULTI = "{'name':'tom','score':{'Math':98,'English':90}}"; 3 JSONObject obj = JSONObject.fromObject(JSON_MULTI); 4 System.out.println("name is : " + obj.get("name")); 5 System.out.println("score is : " + obj.get("score")); 6 7 JSONObject scoreObj = (JSONObject) obj.get("score"); 8 System.out.println("Math score is : " + scoreObj.get("Math")); 9 System.out.println("English score is : " + scoreObj.get("English"));
![](/assets/blank.gif)
输出:
name is : tom
score is : {"English":90,"Math":98}
Math score is : 98
English score is : 90
3、把bean对象转化成JSONObject对象:
Person、Info、Score类分别如下:(注:要定义成独立的三个public类,不能定义成内部类或非public类,否则会转换异常)
![](/assets/blank.gif)
1 public class Person { 2 private String name; 3 4 private Info info; 5 6 public String getName() { 7 return name; 8 } 9 10 public void setName(String name) { 11 this.name = name; 12 } 13 14 public Info getInfo() { 15 return info; 16 } 17 18 public void setInfo(Info info) { 19 this.info = info; 20 } 21 22 @Override 23 public String toString() { 24 return "Person [name=" + name + ", info=" + info + "]"; 25 } 26 27 }
![](/assets/blank.gif)
![](/assets/blank.gif)
1 public class Info { 2 private int age; 3 private Score score; 4 5 public int getAge() { 6 return age; 7 } 8 9 public void setAge(int age) { 10 this.age = age; 11 } 12 13 public Score getScore() { 14 return score; 15 } 16 17 public void setScore(Score score) { 18 this.score = score; 19 } 20 21 @Override 22 public String toString() { 23 return "Info [age=" + age + ", score=" + score + "]"; 24 } 25 26 }
![](/assets/blank.gif)
![](/assets/blank.gif)
1 public class Score { 2 private String math; 3 private String english; 4 5 public String getMath() { 6 return math; 7 } 8 9 public void setMath(String math) { 10 this.math = math; 11 } 12 13 public String getEnglish() { 14 return english; 15 } 16 17 public void setEnglish(String english) { 18 this.english = english; 19 } 20 21 @Override 22 public String toString() { 23 return "Score [math=" + math + ", english=" + english + "]"; 24 } 25 26 }
![](/assets/blank.gif)
转换方法:
![](/assets/blank.gif)
1 Score score = new Score(); 2 score.setEnglish("A"); 3 score.setMath("B"); 4 5 Info info = new Info(); 6 info.setAge(20); 7 info.setScore(score); 8 9 Person person = new Person(); 10 person.setInfo(info); 11 person.setName("Tim"); 12 13 JSONObject obj = JSONObject.fromObject(person); 14 System.out.println(obj.toString());
![](/assets/blank.gif)
输出:
{
"name": "Tim",
"info": {
"score": {
"english": "A",
"math": "B"
},
"age": 20
}
}
4、把json数组转换成JsonObject数组:
![](/assets/blank.gif)
1 // 数组形式的json 2 public static final String JSON_ARRAY = "[{'name':'tom'},{'name':'john','age':20},{}]"; 3 4 JSONArray arr = JSONArray.fromObject(JSON_ARRAY); 5 System.out.println(arr); 6 7 for (int i = 0; i < arr.size(); i++) { 8 JSONObject obj = arr.getJSONObject(i); 9 System.out.println(obj.toString()); 10 }
![](/assets/blank.gif)
输出:
[{"name":"tom"},{"name":"john","age":20},{}]
{"name":"tom"}
{"name":"john","age":20}
{}
5、构造一个json字符串:
![](/assets/blank.gif)
1 JSONObject obj = new JSONObject(); 2 obj.put("name", "tom"); 3 obj.put("age", 19); 4 5 // 子对象 6 JSONObject objContact = new JSONObject(); 7 objContact.put("tel", "123456"); 8 objContact.put("email", "tom@test.com"); 9 obj.put("contact", objContact); 10 11 // 子数组对象 12 JSONArray scoreArr = new JSONArray(); 13 JSONObject objEnglish = new JSONObject(); 14 objEnglish.put("course", "english"); 15 objEnglish.put("result", 100); 16 objEnglish.put("level", "A"); 17 18 JSONObject objMath = new JSONObject(); 19 objMath.put("course", "math"); 20 objMath.put("result", 50); 21 objMath.put("level", "D"); 22 23 scoreArr.add(objEnglish); 24 scoreArr.add(objMath); 25 26 obj.put("score", scoreArr); 27 28 System.out.println(obj.toString());
![](/assets/blank.gif)
输出:
{
"score": [
{
"result": 100,
"level": "A",
"course": "english"
},
{
"result": 50,
"level": "D",
"course": "math"
}
],
"contact": {
"tel": "123456",
"email": "tom@test.com"
},
"name": "tom",
"age": 19
}
思考:输出的json中的字段的顺序有没有办法设置?
用JSONObject解析和处理json数据相关推荐
- $Java-json系列(二):用JSONObject解析和处理json数据
本文中主要介绍JSONObject处理json数据时候的一些常用场景和方法. (一)jar包下载 所需jar包打包下载百度网盘地址:https://pan.baidu.com/s/1c27Uyre ( ...
- jsonobject json对象里面_「jsonobject」用JSONObject解析和处理json数据 - seo实验室
jsonobject 本文中主要介绍jsonobject处理json数据时候的一些常用场景和方法. (一)jar包下载 所需jar包打包下载百度网盘地址:https://pan.baidu.com/s ...
- Android中怎获取json,Android应用中如何解析获取的json数据
Android应用中如何解析获取的json数据 发布时间:2020-11-24 17:10:08 来源:亿速云 阅读:107 作者:Leah 这篇文章将为大家详细讲解有关Android应用中如何解析获 ...
- gson解析mysql城市json数据_Gson解析复杂的json数据
首先我们需要定义一个序列化的Bean,这里采用内部类的形式,看起来会比较清晰一些: 1 public classJsonBean {2 publicString a;3 public Listb;4 ...
- Esp8266 进阶之路28 【高级篇】教你轻松自如使用cJson在乐鑫 esp8266 如何解析一段json数据以及如何生成一段json数据。(附带demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...
- java百度天气接口解析_Java调用天气接口(百度天气)解析返回的JSON数据
简介:本文详细讲述了通过Java调用百度天气接口的方法,取得返回的JSON格式的数据,并且通过第三方包解析JSON格式的数据. 通过百度天气API调用网络编程接口接收返回的JSON格式的数据. 关于百 ...
- java解析与生成json数据的四种方式,比如将json字符串转为json对象或json对象转为json字符串
文章目录 1. 详说json 1.1 何为json 1.2 json语法 2. Java解析与生成JSON的四种方式 2.1 传统方式 2.2 利用Jackson方式 2.3 利用Gson方式 2.4 ...
- Java解析中国城市Json数据
由于城市列表基本是固定不变的,App可以读取本地文件来显示城市列表,这里使用Json数据把城市列表保存起来,在代码中解析Json数据显示就方便,在此把它记录下来,这里的城市列表是根据地图得到的,方便以 ...
- java 生成json数据_解析和生成JSON数据
JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值.它对外部(External: 应用toString()方法输出的数值)调 ...
最新文章
- linux安装语言总是waiting,node的serialport在arm的Linux安装血泪史之我太难了
- 坑系列 --- 时间和空间的平衡
- linux安装并管理mysql数据库
- 我是如何进入全球顶级AI实验室的 (1)
- 春运12306的bug
- 小朋友排队|2014年蓝桥杯B组题解析第十题-fishers
- 微信红包技术架构,防外挂贼牛逼!(附胶片下载)
- 数据结构思维 第十五章 爬取维基百科
- 拉格朗日插值(知识整理+公式推导+板子总结)
- Tasking编译器开发TC275(Tricore)中使用自定义段
- macOS Catalina 以上版本使用不了 PPTP协议的(shimo 无法正常使用)
- 少林寺公布武功秘籍 揭开绝技神秘面纱(组图)
- 宝塔搭建网站教程php,怎么利用宝塔面板搭建网站详细教程
- 展锐服务器芯片,芯片“代号”背后的故事,你了解多少?
- C++进制转换(十进制转二进制、八进制、随意进制)
- 搜狐邮箱怎样开启imap服务器,搜狐企业邮箱iPhone如何设置?
- “我的恩典是够你用的”(哥林多后书…
- 换一种思维方式之罗浩的《降级论》
- 核芯国产高压运放CLA4031/ CLA4032
- 推荐测试网站的性能测试工具这最佳的12款
热门文章
- thymeleaf动态选中select_一些LowPoly动态渐变效果实现
- 伤钱伤感情 10件不能和亲戚一起干的事儿
- VUE项目中 获得多个复选框 checkbox 选中的值(jquery)+ 解决 Uncaught TypeError: Cannot read property ‘push‘ of undefine
- 解决 List 执行 remove 时报异常 java.lang.UnsupportedOperationException
- 注解@Cacheable(value =“XXX“) 实现缓存 -- 失效原因
- Centos安装nmon软件 ( 测试 )
- Mysql 无法插入中文,中文乱码解决
- 集合练习:登录注册功能
- 【转载】ASP.NET自定义404和500错误页面
- 在程序开发中日志级别