用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 ...
随机推荐
- bash实例
1写一个脚本,完成如下功能(使用函数):1.脚本使用格式:mkscript.sh [-D|--description "script description"] [-A|--aut ...
- MediaStore类的使用
安卓系统会在每次开机之后扫描所有文件并分类整理存入数据库,记录在MediaStore这个类里,通过这个类就可以快速的获得相应类型的文件. 当然这个类只是给你一个uri,提取文件的操作还是要通过Curo ...
- JS实现——贪吃蛇
把以下代码保存成Snake.html文件,使用Google或360浏览器打开 <!DOCTYPE HTML> <html> <head> <meta char ...
- UTV - URL Tag Validation
What`s UTV 1.URL Tag Validation 2.Special format of URL for preventing unauthorized usage and access ...
- Jeddict:怎样在window系统下,成功打包Angular
在Jeddict的应用过程中,发现了一个问题.如果前端视图选择Angular(具体版本,需要根据插件版本确定.此处理解为非Angular JS),那么在自动构建的过程中,会发现,每当在安装NodeJS ...
- web结对项目
一.Coding.Net项目地址: https://git.coding.net/verde/Pair_Work.git 二.对接口进行的设计 看教科书和其它资料中关于Informati ...
- hibernate缓存详解
hibernate中提供了两级缓存,一级缓存是Session级别的缓存,它属于事务范围的缓存,该级缓存由hibernate管理,应用程序无需干预:二级缓存是SessionFactory级别的缓存,该级 ...
- Hibernate的简单封装Session(方便调用)
因为每次用增删改查时都需要用到hibernate的配置来生成session工厂进而生成session,比较麻烦,所以我们直接封装一个可以调用的类,需要的时候只需要调用即可. 新建一个Hibernate ...
- 【bzoj3073】[Pa2011]Journeys 线段树优化建图+堆优化Dijkstra
题目描述 Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路.N个国家很快建造好了,用1..N编号,但是他发现道路实在太多了,他要一条条建简直是不可能的!于是他以如下方式建造道路:(a, ...
- ACM程序设计选修课——1043: Radical loves integer sequences(YY)
1043: Radical loves integer sequences Time Limit: 1 Sec Memory Limit: 128 MB Submit: 36 Solved: 4 ...