【GT-安卓应用开发之JSON解析】

        首先,我们需要理解什么是json。那么什么是json呢?json其实是一种数据结构,json分为两种结构,一种是我们常见的以key-value形式存在的无序jsonobject对象,另外一种则是有序的集合,也被称为数组(jsonarray)。

        解析json其实就是解析json字符串,从字符串中获取到我们需要的数据。解析方法有很多,在这里分享一下我最常用的两种:

        第一种,原始的JSONObject进行解析

        我们假定一个json字符串是{"name":"gt","age":24,"birth":"1994-11-16"},接下来我们分别取出name、age和birth的值,代码如下:

String jsonStr = "{\"name\":\"gt\",\"age\":24,\"birth\":\"1994-11-16\"}";
String name="",birth="";
int age=0;
JSONObject jsonObject;
try {
    jsonObject = new JSONObject(jsonStr);
    name = jsonObject.getString("name");
    age = jsonObject.getInt("age");
    birth = jsonObject.getString("birth");
} catch (JSONException e) {
    e.printStackTrace();
}

       在实际应用中,我们总是碰到嵌套的json,那该怎解析呢?其实很简单,我们假设json字符串是{"teacher":{"name":"gt","age":24,"birth":"1994-11-16"}},那么它的解析代码如下:

String jsonStr = "{\"teacher\":{\"name\":\"gt\",\"age\":24,\"birth\":\"1994-11-16\"}}";
String name="",birth="";
int age=0;
JSONObject jsonObject,jsonTeacher;
try {
    jsonObject = new JSONObject(jsonStr);
    jsonTeacher = jsonObject.getJSONObject("teacher");
    name = jsonObject.getString("name");
    age = jsonObject.getInt("age");
    birth = jsonObject.getString("birth");
} catch (JSONException e) {
    e.printStackTrace();
}

        在前面我们提到了还一个JSONArray的概念,其实我们完全可以把其看成一个数组,通过getJSONArray获取

        第二种,借助第三方库Gson解析

        在这里我们采用反序列化的方式来解析json字符串,首先我们需要获取到json字符串,假设json字符串的格式是这个样子的:

{"state":1,"msg":"\u6682\u65e0\u6570\u636e","result":""}

      首先定义一个javabean对象,可以复制json字符串快速构造,创建类后alt+Insert,如图示:

       然后创建Gson对象,Gson gson = new Gson();

       反序列化,Bean bean = gson.fromJson(json, Bean.class);

       之后我们便可通过JavaBean中定义的get方法获取对应的值,如果json有嵌套则会用到ResultBean

猜你喜欢

转载自blog.csdn.net/qq_17433217/article/details/81260328
今日推荐