一、前言

        本文我们将介绍如何解析Json数据,主要通过Gson库中的相关类来实现。

二、详细步骤

        首先,我们要拿到一个基础的Json数据,这里将以下面的Json数据作为示例:

{

"code":"1",

"msg":"ok",

"data":{

"status":"run",

"runtime":36600

}

}

        解析Json数据,我们要先创建JsonParser对象,然后执行该对象的parse方法,并将返回值赋给JsonObject对象。

        此时jsonobject即是json解析后的对象,我们可以通过get函数获取到文本型的值,比如获取code值。

        当然,我们也可以将获取到的值转换成int等类型返回,如下图所示。

        若要获取类如上述json字符串中的data的jsonobject,则需要用getAsJsonObject()函数进行转换。

        转换后,取值方法和上一个相同。

        对于如下所示的json文本格式,我们需要用JsonArray来解析出JsonObject.

{

"data":[

{

"code":0,

"status":"run"

},

{

"code":1,

"status":"wait"

}

]

}

        先按照上述方法解析出JsonObject对象,然后调用该对象的getAsJsonArray()方法返回JsonArray对象,然后调用JsonArray对象的get(int index).toString()方法,将嵌套在里边的Json文本取出,再按正常步骤解析即可。

        本文所用代码如下:

import com.google.gson.*;

public class Main {

public static void main(String[] args) {

String json="{\n" +

" \"code\":\"1\",\n" +

" \"msg\":\"ok\",\n" +

" \"data\":{\n" +

" \"status\":\"run\",\n" +

" \"runtime\":36600\n" +

" }\n" +

"}";

JsonParser jsonParser=new JsonParser();

JsonObject jsonObject= (JsonObject) jsonParser.parse(json);

//解析第一层的json数据

System.out.printf(jsonObject.get("code").toString());

System.out.println(jsonObject.get("code").getAsInt());

//获取第二层的JsonObject

jsonObject=jsonObject.getAsJsonObject("data");

//解析第二层的数据

System.out.println(jsonObject.get("status"));

String data2="{\n" +

" \"data\":[\n" +

" {\n" +

" \"code\":0,\n" +

" \"status\":\"run\"\n" +

" },\n" +

" { \n" +

" \"code\":1,\n" +

" \"status\":\"wait\"\n" +

" }\n" +

" ]\n" +

"}";

JsonParser jsonParser2=new JsonParser();

JsonObject jsonObject2= (JsonObject) jsonParser2.parse(data2);

JsonArray jsonArray=jsonObject2.getAsJsonArray("data");

jsonObject2= (JsonObject) jsonParser2.parse(jsonArray.get(1).toString());

System.out.printf(jsonObject2.get("status").getAsString());

}

}

        全部代码执行结果如下:

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: