用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字符串:
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"));
输出:
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类,否则会转换异常)
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 }
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 }
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 }
转换方法:
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());
输出:
{
"name": "Tim",
"info": {
"score": {
"english": "A",
"math": "B"
},
"age": 20
}
}
4、把json数组转换成JsonObject数组:
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 }
输出:
[{"name":"tom"},{"name":"john","age":20},{}]
{"name":"tom"}
{"name":"john","age":20}
{}
5、构造一个json字符串:
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());
输出:
{
"score": [
{
"result": 100,
"level": "A",
"course": "english"
},
{
"result": 50,
"level": "D",
"course": "math"
}
],
"contact": {
"tel": "123456",
"email": "tom@test.com"
},
"name": "tom",
"age": 19
}
转自:https://www.cnblogs.com/jiayongji/p/6417862.html#top
用JSONObject解析和处理json数据的更多相关文章
- $Java-json系列(二):用JSONObject解析和处理json数据
本文中主要介绍JSONObject处理json数据时候的一些常用场景和方法. (一)jar包下载 所需jar包打包下载百度网盘地址:https://pan.baidu.com/s/1c27Uyre ( ...
- Gson解析复杂的json数据
最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的json解析方法即JsonObject ...
- 使用Gson解析复杂的json数据
Gson解析复杂的json数据 最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的jso ...
- 【转】Jquery ajax方法解析返回的json数据
转自http://blog.csdn.net/haiqiao_2010/article/details/12653555 最近在用jQuery的ajax方法传递接收json数据时发现一个问题,那就是返 ...
- hive 存储,解析,处理json数据
hive 处理json数据总体来说有两个方向的路走 1.将json以字符串的方式整个入Hive表,然后通过使用UDF函数解析已经导入到hive中的数据,比如使用LATERAL VIEW json_tu ...
- Gson解析第三方提供Json数据(天气预报,新闻等)
之前都是自己写后台,自己的server提供数据给client. 近期在看第三方的数据接口,訪问其它站点提供的信息.比方.我们可能自己收集的数据相当有限.可是网上提供了非常多关于天气预报.新闻.星座运势 ...
- 【UE4 C++】 解析与构建 Json 数据
准备条件 Json 格式 { "Players":[ { "Name": "Player1", "health": 20 ...
- ios解析XML和json数据
解析的基本概念所谓“解析”:从事先规定好的格式串中提取数据解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据iOS开发常见的解析:XML解析.JSON解析 一.XML数 ...
- 解析处理常用json数据总结
工作中用ajax接收到接口返回的数据需要进行解析后操作,这里总结一下平时的方法,用的jquery,复制下来的页面把引入的路径改一下即可. <!DOCTYPE html> <html ...
随机推荐
- 安装好的IIS,发布成功后打开网站出现错误
开发web项目时需要安装IIS,在安装好IIS的Windows7本上发布asp.net网站时,web程序已经映射到了本地IIS上,但运行如下错误提示“处理程序“PageHandlerFactory ...
- hdu4864不是一般的贪心
题目表达的非常清楚,也不绕弯刚开始以为最大权匹配,仔细一想不对,这题的数据双循环建图都会爆,只能先贪心试一下,但一想贪心也要双循环啊,怎么搞? 想了好久没头绪,后来经学长提醒,可以把没用到的先记录下来 ...
- LA 7049 Galaxy 枚举
题意: \(x\)轴上有\(n\)个质量为\(1\)的点,他们的坐标分别为\(x_i\). 质心的坐标为\(\frac{\sum{x_i}} {n}\) 转动惯量为\(\sum{d_i^2}\),其中 ...
- poj2449 Remmarguts' Date K短路 A*
K短路裸题. #include <algorithm> #include <iostream> #include <cstring> #include <cs ...
- CornerStone使用教程(配置SVN,HTTP及svn简单使用)
1.SVN配置 假设你公司svn地址为:svn://192.168.1.111/svn/ios,用户名:svnserver,密码:123456 1:填写主机地址 2:如果你的主机地址中有端口号,如为1 ...
- linux随笔二
1.查看整个文件 cat mongo.sh 查看脚本文件的内容:mongo 172.60.0.203:27017/che001 -uplatform -pplatform cat -n **,查 ...
- ccna 闫辉单臂路由 和 acl access control list
ccna 闫辉单臂路由 和 acl access control list 一单臂路由 当前园区网设计很少用到 成本低 小型的.局域网可用 二ACL acc ...
- [python IO学习篇] 补充中文编码
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820066616a7 ...
- 九度oj 题目1470:调整方阵
题目描述: 输入一个N(N<=10)阶方阵,按照如下方式调整方阵:1.将第一列中最大数所在的行与第一行对调.2.将第二列中从第二行到第N行最大数所在的行与第二行对调. 依此类推...N-1.将第 ...
- 九度oj 题目1397:查找数段
题目描述: 在BaiDu搜索引擎里,如何提高搜索效率是研发人员为之奋斗的目标.现在,JOBDU密码库里也有一段数字片段S(0<长度<=100,000),HQ想通过智能搜索得到包含关键字P( ...