实际运用JsonObject和JsonArray的积累

1.调用第三方接口获取返回数据

 JSONObject json = JSONObject.parseObject(httpRequestUtil.post(url, parmaMap));
            String s = json.getString("result");

类似于这样,获取到数据后,可以打印出来数据,如果json对象里面还嵌套有json对象或者是json数组,那就需要进一步的去解析出来,如果是json对象的话,那就直接嵌套上面的代码即可,只需要注意的是你需要解析的json对象的名字。

JSONObject json2 = JSONObject.parseObject(js.getString("data"));
            String s = json2.getString("content");

如果是嵌套的是json数组,那就需要另外的方法,

 JSONArray array = res.getJSONArray("subjects")

那就需要声明一个数组去接收解析出来的json数组,否则是无法装载的。拿到json数组以后,一般情况是继续转回为json对象进行取值,所以,又需要将json数组循环取出放到json对象中,以便我们获取到里面的数据。

JSONArray array = res.getJSONArray("subjects");
        for (int i = 0; i <array.size(); i++) {
            JSONObject returnjson = new JSONObject();
            JSONObject json2 = array.getJSONObject(i);
            //拿到评分
            String rating = json2.getString("rating");
            String title = json2.getString("title");
            //拿到主演照片
            JSONArray array2 = json2.getJSONArray("casts");
            JSONArray arrays = new JSONArray();
            for (int a=0;a<array2.size();a++){

                JSONObject json3 = array2.getJSONObject(a);
                //System.out.println(json3.getString("avatars"));
                JSONObject json4 = JSONObject.parseObject(json3.getString("avatars"));
                JSONObject json5 = new JSONObject();
                String starPicture = json4.getString("medium");
                String name = json3.getString("name");
                json5.put("starPicture",starPicture);
                json5.put("name",name);
                arrays.add(json5);
            }
            returnjson.put("title",title);
            returnjson.put("rating", rating);
            returnjson.put("starPicture", arrays);
            arr.add(returnjson);
        }

实话,这上面是我在实践中摸索出来的代码,或许有很多优化的地方,但是重在通过自我摸索获取的经验。其实我这里调用的接口返回数据是比较臃肿的,一层嵌套一层。所以我就直接去把它一层一层的解开,最终拿到想要的数据去组装。

上面的解析json逻辑是这样的。。。第一步,拿到成功返回的数据data。第二步,解析出data中的json数组,并声明一个json数组进行接收。第三步,将解析出的json数组重新序列化json对象。第四步,拿到重新序列化对象的json对象里面的数据。第五步,最后进行数据组装。

这里我要说的是,一定要注意自己的json对象和json数组定义的位置,否则你拿到的永远是最后一条数据。

看到我这里最后一行的arr数组,我这里就是声明在外面,而那些代码逐步执行并循环的那些对象和数组必须放在里面,以便执行后立即装载。这是我对json遇到的比较大的一个坑。希望可以谨记。

猜你喜欢

转载自blog.csdn.net/T_james/article/details/80434625