本文主要是介绍实际运用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遇到的比较大的一个坑。希望可以谨记。
这篇关于实际运用JsonObject和JsonArray的积累的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!