Android基础控件之网络解析JSONObject与JSONArray的基本使用

1、网络JSON

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
    "resultCode": "200",
    "data": [
        {
            "brand": "Audi",
            "type": "A8L W12"
        },
        {
            "brand": "BMW",
            "type": "760Li"
        },
        {
            "brand": "Maybach",
            "type": "S600"
        },
        {
            "brand": "Rolls Royce",
            "type": "Patntom"
        }
    ]
}

2、网络请求参考:Android开发基础控件HttpURLConnection网络请求
3、JSONObject相当于hashMap,有getString、getJSONArray等方法取值;
4、JSONArray相当于ArrayList集合,循环遍历从中取JSONObject对象;
5、将上述JSON转换成Java对象,新建一个SAResponse用来接收整个JSON,再创建一个SAObject接收内部JSONObject;
关键代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    public void responseJsonFromString(String str){
        Log.i("SALog", str);
        SAResponse res = new SAResponse();
        try {
            // 新建一个JSONObject对象接收整个JSON;
            JSONObject resJson = new JSONObject(str);
            // getString可直接取出JSONObject中键对应的值;
            res.setCode(resJson.getString("resultCode"));
            // getJSONArray取JSON当中的数组
            JSONArray jsonArray = resJson.getJSONArray("data");
            ArrayList<SAObject> array = new ArrayList<>();
            // 遍历JSONArray并将其中的JSONObject元素转换成对象
            for (int i = 0; i < jsonArray.length(); i++){
                JSONObject jsonObj = jsonArray.getJSONObject(i);
                SAObject object = new SAObject();
                object.setBrand(jsonObj.getString("brand"));
                object.setType(jsonObj.getString("type"));
                array.add(object);
            }
            res.setArray(array);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        Log.i("SALog", res.toString());
    }

Leave a Reply