用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 ...
随机推荐
- MIP启发式算法:Variable Neighborhood Decomposition Search
*本文记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文主要简述和VND VNS RINS很相关的vairable neighborhood decomposition search. 目 ...
- Linux学习-以最新核心版本编译 CentOS 7.x 的核心
为了某些缘故需要最新的 4.x.y 的核心版本来实作某些特定的功能时,那该 如何是好?没办法,只好使用最新的核心版本来编译你可以依照上面的程序来一个一个处理, 没有问题~不过,你也可以根据 ELRep ...
- Hadoop4.2HDFS测试报告之四
第二组:文件存储读过程记录 测试系统组成 存储类型 测试程序或命令 测试文件大小(Mb) 文件个数(个) 客户端并发数(个) 读速率 (M/s) NameNode:1 DataNode:1 本地存储 ...
- JVM执行子系统探究——类文件结构初窥
类文件(.class)是搞java的都非常熟悉的文件,一般我们在编写java之后文件之后,首先通过javac工具生成.class类字节码文件,而后在执行程序的时候由虚拟机加载执行.那么为什么要生成.c ...
- CSS动画小结
CSS动画 原理:1.画面之间变化 2.视觉暂留作用 常见问题 1.CSS 动画的实现方式有几种 1.transition 2. keyframes(animation) 2.过渡动画和关键帧动画 ...
- 2.新手必须掌握的Linux命令
第2章 新手必须掌握的Linux命令 章节简述: 本章首先介绍系统内核和Shell终端的关系与作用,然后介绍Bash解释器的4大优势并学习Linux命令的执行方法.经验丰富的运维人员可以通过合理地组合 ...
- 大数据学习——spark运营案例
iplocation需求 在互联网中,我们经常会见到城市热点图这样的报表数据,例如在百度统计中,会统计今年的热门旅游城市.热门报考学校等,会将这样的信息显示在热点图中. 因此,我们需要通过日志信息(运 ...
- getattr、setattr、hasattr
写一个演示类 class test(): title="验证getattr.setattr.hasattr方法" def run(self): return "run方法 ...
- JDBC 学习笔记(五)—— Statement
JDBC 使用 Statement 作为 SQL 语句的执行器. Statement 通过 Connection.createStatement() 方法创建,一共支持以下6种方式执行 SQL 语句: ...
- 设计模式(一)单例模式:3-静态内部类模式(Holder)
思想: 相比于懒汉以及饿汉模式,静态内部类模式(一般也被称为 Holder)是许多人推荐的一种单例的实现方式,因为相比懒汉模式,它用更少的代码量达到了延迟加载的目的. 顾名思义,这种模式使用了一个私有 ...