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());