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 ...
随机推荐
- IE中透明度的读写
一.获取透明度 ele.filters.alpha 返回元素所有滤镜的对象,可在此基础上获取opacity即可. 但是似乎ele.filters只能存储第一个滤镜,而当我们把alpha放在第二位时,就 ...
- Android之内存泄漏
开篇之前,我们要先理解:什么是内存泄漏.百度百科:内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等 ...
- 全网最详细的大数据集群环境下如何正确安装并配置多个不同版本的Cloudera Hue(图文详解)
不多说,直接上干货! 为什么要写这么一篇博文呢? 是因为啊,对于Hue不同版本之间,其实,差异还是相对来说有点大的,具体,大家在使用的时候亲身体会就知道了,比如一些提示和界面. 全网最详细的大数据集群 ...
- PPT-常用快捷键
Ctrl+Shift+C 复制文本格式 Ctrl+Shift+V 粘贴文本格式 Ctrl+B 应用粗体格式Ctrl+U 应用下划线Ctrl+l 应用斜体格式 全选 Ctrl + A 光标之后 ...
- Vue2.0-token权限处理
token一种身份的验证,在大多数网站中,登录的时候都会携带token,去访问其他页面,token就想当于一种令牌.可以判断用户是否登录状态.本次页面是通过Element-ui搭建的登录界面 当用户登 ...
- 如何查找SHELL的进程号并杀死
一.shell查找进程并杀死 #!/bin/sh tomcat_id=`ps -ef | grep tomcat | grep -v "grep" | awk '{print $2 ...
- 代理模式——java设计模式
代理模式(Proxy Pattern) GoF中给出的代理模式的定义为: 代理模式给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问. 代理模式的英文叫做Proxy或Surrogate ...
- maven-插件-不同的开发环境指定
通常指定 dev环境 和 prod 环境 <profiles> <profile> <id>prod</id> <build> <re ...
- [Python学习笔记-005] 理解yield
网络上介绍yield的文章很多,但大多讲得过于复杂或者追求全面以至于反而不好理解.本文用一个极简的例子给出参考资料[1]中的讲解,因为个人觉得其讲解最为通俗易懂,读者只需要对Python的列表有所了解 ...
- 了解Spring-boot-starter常用依赖模块
Spring-boot的优点: 1.Spring框架的“约定优先于配置(COC)”理念以及最佳实践. 2.针对日常企业应用研发各种场景的Spring-boot-starter自动配置依赖模块,且“开箱 ...