Gson解析复杂JSON字符串的两种方式
JSON解析可以使用的库:
JSONObject(源自Android官方)、
Gson(源自Google)、
Jackson(第三方开源库)、
FastJSON(第三方开源库)、
本文例子使用Google提供的Gson。
什么是JavaBean
JavaBean实际上是一种特殊的Java类,是一种规范,经常用于封装数据。JavaBean遵循如下编程原则:
1、必须有一个public无参构造函数;
2、所有属性私有化private;
3、私有化的属性必须通过public的getter和setter暴露,且方法命名需要遵循getXXX(XXX首字母需要大写,故属性名称前两个字母大小写必须一致,避免混淆)、setXXX规则。
4、可序列化,即实现java.io.serializable接口,用于实现Bean的持久化。
方法一:JavaBean定义Json结构
步骤1:根据Json结构定义相应封装类,类的属性(即属性名称)必须与Json结构的key一一对应。
步骤2:直接把JSON字符串解析成步骤1的类
JavaBean定义:
class Body{
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public RequestData getRequestData() {
return requestData;
}
public void setRequestData(RequestData requestData) {
this.requestData = requestData;
}
private String url;
private RequestData requestData;
}
class RequestData{
private String ex;
public String getEx() {
return ex;
}
public void setEx(String ex) {
this.ex = ex;
}
}
json解析:
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
//具体解析代码
Gson gson = new Gson();
Body bodyObj= gson.fromJson(body,Body.class);
System.out.println("===="+bodyObj.getUrl());
System.out.println("===="+bodyObj.getRequestData().getEx());
方式二:直接解析最外层Json
楼主的json字符串是一个复杂对象,只需要解析出外层的URL和reqData对象,再进行转发,实际并不关心reqData具体结构,故实际采取这种方式。
JsonParser可以将json字符串解析转换为JsonObject, JsonObject可以通过get(key).getAsJsonObject(),直接解析JsonObject、string、int等.
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
//具体解析代码
String body = "{\"requestData\":{\"ex\":\"ext\"},\"url\":\"456\"}";
JsonParser parser = new JsonParser();
JsonObject jsonObject = parser.parse(body).getAsJsonObject();
JsonObject s = jsonObject.get("requestData").getAsJsonObject();
System.out.println("=====" + s.toString());
Gson解析复杂JSON字符串的两种方式的更多相关文章
- spring接收json字符串的两种方式
一.前言 前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到.自己测试接口时使用postman的form- ...
- java后台处理解析json字符串的两种方式
简单说一下背景 上次后端通过模拟http请求百度地图接口,得到的是一个json字符串,而我只需要其中的某个key对应的value. 当时我是通过截取字符串取的,后来觉得不太合理,今天整理出了两种处理解 ...
- Java - 格式化输出JSON字符串的两种方式
目录 1 使用阿里的fastjson 1.1 项目的pom.xml依赖 1.2 Java示例代码 2 使用谷歌的gson 2.1 项目的pom.xml依赖 2.2 Java示例代码 1 使用阿里的fa ...
- 彻底了解构建 JSON 字符串的三种方式
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7701856.html 前言:JSON 是轻量级的数据交换格式,很常用,尤其是在使用 Ajax ...
- Json传递数据两种方式(json大全)
1.Json传递数据两种方式(json大全)----------------------------字符串 var list1 = ["number","name&quo ...
- 【代码笔记】iOS-向服务器传JSON数据的两种方式
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- C语言中存储多个字符串的两种方式
C语言中存储多个字符串的两种方式 方式一 二维字符串数组 声明: char name[][] = { "Justinian", "Momo", " ...
- Java解析Json数据的两种方式
JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...
- Asp.net Web API 返回Json对象的两种方式
这两种方式都是以HttpResponseMessage的形式返回, 方式一:以字符串的形式 var content = new StringContent("{\"FileName ...
随机推荐
- java-构建jar带哟参数提示的
使用command的cli包构建带有参数提示的jar包 需要引入command cli的依赖 <commons.version>1.2</commons.version> &l ...
- curl 详解【转】
原文:https://blog.csdn.net/lansesl2008/article/details/14523303 用途说明 curl命令是一个功能强大的网络工具,它能够通过http.ftp等 ...
- Linux ulimit和动态修改MySQL最大线程数限制
ulimit是限制进程对资源的使用但软件资源限制变化不大,特别是process/file,分别对应nproc和nofilenproc可用 ulimit -u 查询:nofile可用 ulimit -n ...
- 面试:vector类的简单实现
vector类的简单实现 #include <vector> #include <iostream> #include <cstring> #include < ...
- python3 get post请求Yunba RESTful API
一:主要内容 获取云巴appkey和seckey 状态回复说明 get请求 post请求 二:获取云巴appkey和seckey 1. 注册云巴 在云巴官网,注册一个云巴账号,官网地址:https:/ ...
- HDU 1576 A/B(欧几里德算法延伸)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1576 题目: Problem Description 要求(A/B)%9973,但由于A很大,我们只 ...
- string基本字符序列容器(竞赛时常用的使用方法总结)
C语言只提供了一个char类型用来处理字符,而对于字符串,只能通过字符串数组来处理,而C++STL提供了string基本字符序列容器来处理字符串,可以将其理解为字符串类,它提供了添加,删除,替换.查找 ...
- VC++窗口创建过程,图形绘制,时钟程序
创建窗口步骤: (1)注册窗口类(RegisterClassEx) (2)创建窗口(CreateWindowEx) (3)在桌面显示窗口(ShowWindow) (4)更新窗口客户区(UpdateWi ...
- Net is as typeof 运行运算符详解
概述 在了解运行运算符的前提我们需要了解什么是RTTI ,在任何一门面向对象的语言中,都有RTTI这个概念(即 运行时). RTTI(Run-Time Type Identification),通过运 ...
- Android-Handler使用姿势
http://www.jianshu.com/p/8e9a54f1826e 好文章先马,慢慢看