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字符串的两种方式的更多相关文章

  1. spring接收json字符串的两种方式

    一.前言 前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到.自己测试接口时使用postman的form- ...

  2. java后台处理解析json字符串的两种方式

    简单说一下背景 上次后端通过模拟http请求百度地图接口,得到的是一个json字符串,而我只需要其中的某个key对应的value. 当时我是通过截取字符串取的,后来觉得不太合理,今天整理出了两种处理解 ...

  3. Java - 格式化输出JSON字符串的两种方式

    目录 1 使用阿里的fastjson 1.1 项目的pom.xml依赖 1.2 Java示例代码 2 使用谷歌的gson 2.1 项目的pom.xml依赖 2.2 Java示例代码 1 使用阿里的fa ...

  4. 彻底了解构建 JSON 字符串的三种方式

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7701856.html 前言:JSON 是轻量级的数据交换格式,很常用,尤其是在使用 Ajax ...

  5. Json传递数据两种方式(json大全)

    1.Json传递数据两种方式(json大全)----------------------------字符串 var list1 = ["number","name&quo ...

  6. 【代码笔记】iOS-向服务器传JSON数据的两种方式

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...

  7. C语言中存储多个字符串的两种方式

    C语言中存储多个字符串的两种方式 方式一    二维字符串数组 声明: char name[][] = { "Justinian", "Momo", " ...

  8. Java解析Json数据的两种方式

    JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...

  9. Asp.net Web API 返回Json对象的两种方式

    这两种方式都是以HttpResponseMessage的形式返回, 方式一:以字符串的形式 var content = new StringContent("{\"FileName ...

随机推荐

  1. Quarz.net 设置任务并行和任务串行

    如何设置Quarz.net某个任务完成后再继续执行该任务?  Quarz.net 的任务有并行和串行两种: 并行:一个定时任务,当执行时间到了的时候,立刻执行此任务,不管当前这个任务是否在执行中: 串 ...

  2. Apache本地配置虚拟域名

    转载+修改 例:虚拟域名为 aaa.com 端口为默认80 index.html所在目录  D:/wamp/www/web 不用解析域名,使用虚假的域名也可以 apache安装完默认是不开启虚拟服务器 ...

  3. 执行bin/hdfs haadmin -transitionToActive nn1时出现,Automatic failover is enabled for NameNode at bigdata-pro02.kfk.com/192.168.80.152:8020 Refusing to manually manage HA state的解决办法(图文详解)

    不多说,直接上干货! 首先, 那么,你也许,第一感觉,是想到的是 全网最详细的Hadoop HA集群启动后,两个namenode都是standby的解决办法(图文详解) 这里,nn1,不多赘述了.很简 ...

  4. 第一章-Javac编译器介绍

    1.Javac概述 编译器可以将编程语言的代码转换为其他形式,如Javac,将Java语言转换为虚拟机能够识别的.class文件形式.而这种将java源代码(以.java做为文件存储格式)转换为cla ...

  5. PHP 使用 GeoIP 进行不同国家 ip 测试

    $ip = "67.220.91.30";// USA switch (mt_rand(0, 15)) { case 0:// India $ip = "210.212. ...

  6. Java MongoDB

    package com.dys.mongo; import java.io.IOException; import java.util.ArrayList; import java.util.List ...

  7. 团队作业6——展示博客(alpha阶段)

    Deadline: 2018-5-9 10:00PM,以提交至班级博客时间为准. 5.10周四实验课将进行alpha阶段项目复审,请在5.10之前,根据以下要求,完成alpha版本的展示,并以此作为参 ...

  8. 浅析Java源码之HttpServlet

    纯粹是闲的,在慕课网看了几集的Servlet入门,刚写了1个小demo,就想看看源码,好在也不难 主要是介绍一下里面的主要方法,真的没什么内容啊~ 源码来源于apache-tomcat-7.0.52, ...

  9. 模拟按下某快捷键:keybd_event使用方法

    keybd_event是函数功能:该函数合成一次击键事件.系统可使用这种合成的击键事件来产生WM_KEYUP或WM_KEYDOWN消息. Windows提供了一个模拟键盘API函数Keybd_even ...

  10. 使用cglib实现数据库框架的级联查询

    写在前面的 这一章是之前写的<手把手教你写一个Java的orm框架> 的追加内容.因为之前写的数据库框架不支持级联查询这个操作,对于有关联关系的表用起来还是比较麻烦,于是就准备把这个功能给 ...