用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 ...
随机推荐
- 【HIHOCODER 1403】后缀数组一·重复旋律(后缀数组)
描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成的数列. 小Hi在练习过很多曲子以后发现很多作品自身包含一样的旋律.旋律是一段连续的数列,相似的旋律在原数列 ...
- Java装饰者模式(Decorator)
一.定义 装饰模式的设计理念主要是以对客户端透明的方式动态扩展对象的功能,是继承关系的一个替代(继承会产生大量的子类,而且代码有冗余).装饰模式可以在不创造更多子类的情况下,将对象的功能加以扩展.装饰 ...
- Java连接Access数据库的那些坑
Java 使用 JDBC 连接Access数据库 需要掌握的技能 1.Java SE基本技术 2.懂点JDBC技术 能够学到如何使用Java正确的连接JDBC 环境 window8.1 64位 jdk ...
- Apache 根据不同的端口 映射不同的站点
以前,在本地新建个项目,总是在Apache的htdocs目录下新建个项目目录,今年弄了个别人写好的网站源码,因为该系统的作者假定网站是放在根目录的,放在二级目录下会出错.所以无奈,只能想办法,根据端口 ...
- Leetcode24--->Swap Nodes in Pairs(交换单链表中相邻的两个节点)
题目:给定一个单链表,交换两个相邻的节点,且返回交换之后的头节点 举例: Given 1->2->3->4, you should return the list as 2-> ...
- 爬虫Scrapy框架-Crawlspider链接提取器与规则解析器
Crawlspider 一:Crawlspider简介 CrawlSpider其实是Spider的一个子类,除了继承到Spider的特性和功能外,还派生除了其自己独有的更加强大的特性和功能.其中最显著 ...
- Python爬虫selenium、PhanmJs
selenium:可以模拟鼠标进行一些操作 实例1:实现自动打开google浏览器,进行百度搜索,并关闭浏览器 from selenium import webdriver from time imp ...
- [python][oldboy][dict] 遍历字典
# coding=utf8 dict_info = {"abc": 1, 1: "liuzhipeng"} for k, v in dict_info.item ...
- 什么是WSDL
WSDL定义 WSDL(Web Service Description Language) 指网络服务描述语言:是一种用来描述Web服务和说明Web服务通信的XML.WSDL用于描述WebServic ...
- Python之自动单元测试之一(unittest使用实例)
软件的测试是一件非常乏味的事情,在测试别人编写的软件时尤其如此,程序员通常都只对编写代码感兴趣,而不喜欢文档编写和软件测试这类"没有创新"的工作.既然如此,为什么不让程序员在编写软 ...