获取另一个JsonObject中的JsonObject的参数

时间:2014-05-25 07:27:21

标签: android json

尝试获取图像的url,这是在JsonObject中,并且两者都在其他JsonObject中

这是引发我的错误

05-25 03:09:51.120    9573-9836/com.learn2crack.tab W/System.err﹕ org.json.JSONException: No value for thumbnail_images
05-25 03:09:51.134    9573-9836/com.learn2crack.tab W/System.err﹕ at org.json.JSONObject.get(JSONObject.java:355)
05-25 03:09:51.134    9573-9836/com.learn2crack.tab W/System.err﹕ at org.json.JSONObject.getJSONObject(JSONObject.java:574)
05-25 03:09:51.134    9573-9836/com.learn2crack.tab W/System.err﹕ at com.learn2crack.tab.ListaCat$GetLocales.doInBackground(ListaCat.java:141)
05-25 03:09:51.134    9573-9836/com.learn2crack.tab W/System.err﹕ at com.learn2crack.tab.ListaCat$GetLocales.doInBackground(ListaCat.java:92)
05-25 03:09:51.134    9573-9836/com.learn2crack.tab W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
05-25 03:09:51.134    9573-9836/com.learn2crack.tab W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-25 03:09:51.135    9573-9836/com.learn2crack.tab W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-25 03:09:51.135    9573-9836/com.learn2crack.tab W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-25 03:09:51.135    9573-9836/com.learn2crack.tab W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-25 03:09:51.135    9573-9836/com.learn2crack.tab W/System.err﹕ at java.lang.Thread.run(Thread.java:841)

JSON

  {"status":"ok","count":2,"count_total":2,"pages":1,"posts":[{"id":4121,"type":"post","slug":"comida-2","url":"http:\/\/web\/comida-2\/","status":"publish","title":"comida 2","title_plain":"comida 2","content":"","excerpt":"","date":"2014-04-18 20:12:33","modified":"2014-05-17 19:10:09","categories":[{"id":13,"slug":"comida","title":"comida","description":"","parent":0,"post_count":2}],"tags":[],"author":{"id":1,"slug":"newmesis","name":"newmesis","first_name":"Luis","last_name":"Ruiz","nickname":"newmesis","url":"","description":"Ingeniero en inform\u00e1tica IP Santo Tomas Chillan"},"comments":[],"attachments":[],"comment_count":0,"comment_status":"open","custom_fields":{"correo":[""],"telefono":["0"],"sample_custom_field":[""],"sample_textarea":[""],"sample_image_field":[""],"layout":[""],"sidebar":[""],"header_title_bar":[""],"header_transparency":[""],"footer":[""],"restrict_roles":[""]}},{"id":4119,"type":"post","slug":"comida-1","url":"http:\/\/web\/comida-1\/","status":"publish","title":"comida 1","title_plain":"comida 1","content":"","excerpt":"","date":"2014-04-18 20:12:08","modified":"2014-05-25 03:02:26","categories":[{"id":13,"slug":"comida","title":"comida","description":"","parent":0,"post_count":2}],"tags":[],"author":{"id":1,"slug":"newmesis","name":"newmesis","first_name":"Luis","last_name":"Ruiz","nickname":"newmesis","url":"","description":"Ingeniero en inform\u00e1tica IP Santo Tomas Chillan"},"comments":[],"attachments":[],"comment_count":0,"comment_status":"open","thumbnail":null,"custom_fields":{"correo":[""],"telefono":["81801756"],"sample_custom_field":[""],"sample_textarea":[""],"sample_image_field":[""],"layout":[""],"sidebar":[""],"header_title_bar":[""],"header_transparency":[""],"footer":[""],"mapa":["a:3:{s:7:\"address\";s:49:\"Volc\u00e1n Parinacota 1202, Chill\u00e1n, Biob\u00edo, Chile\";s:3:\"lat\";s:11:\"-36.6204309\";s:3:\"lng\";s:11:\"-72.0796431\";}"],"horario":[""]},"thumbnail_size":"post-thumbnail","thumbnail_images":{"full":{"url":"http:\/\/web\/wp-content\/uploads\/sites\/6\/2014\/05\/mcdonalds21.jpg","width":560,"height":387},"thumbnail":{"url":"http:\/\/web\/wp-content\/uploads\/sites\/6\/2014\/05\/mcdonalds21-80x80.jpg","width":80,"height":80},"medium":{"url":"http:\/\/web\/wp-content\/uploads\/sites\/6\/2014\/05\/mcdonalds21-300x300.jpg","width":300,"height":300},"twentyfourteen-full-width":{"url":"http:\/\/web\/wp-content\/uploads\/sites\/6\/2014\/05\/mcdonalds21.jpg","width":560,"height":387}}}],"query":{"ignore_sticky_posts":true,"count":"10","status":"published"}}

我试图获取参数full

for (int i = 0; i < Locales.length(); i++) {
                        JSONObject c = Locales.getJSONObject(i);

                        String id = c.getString(TAG_ID);
                        String title = c.getString(TAG_title);

                        JSONObject phone = c.getJSONObject(TAG_CUSTOM);
                        JSONArray araycus = phone.getJSONArray(TAG_TELEFONO);

                        String mobile = araycus.getString(0);


                        JSONObject images = c.getJSONObject(TAG_THUM);
                        JSONObject fullurl = images.getJSONObject(TAG_THUM_FULL);

                        String thumbnail = fullurl.getString(TAG_THUM_FULL_URL);





                        HashMap<String, String> LocalesMAP = new HashMap<String, String>();

                        LocalesMAP.put(TAG_ID, id);
                        LocalesMAP.put(TAG_title, title);
                        LocalesMAP.put(TAG_TELEFONO, mobile);
                        LocalesMAP.put(TAG_THUM_FULL,thumbnail);


                        LocalesList.add(LocalesMAP);

1 个答案:

答案 0 :(得分:0)

试试这个..

而不是这个..

JSONObject images = c.getJSONObject(TAG_THUM);
JSONObject fullurl = images.getJSONObject(TAG_THUM_FULL);
String thumbnail = fullurl.getString(TAG_THUM_FULL_URL);

添加

JSONObject images = null;
String thumbnail = "";

if(c.has(TAG_THUM)){
   images = c.getJSONObject(TAG_THUM);
   JSONObject fullurl = images.getJSONObject(TAG_THUM_FULL);
   thumbnail = fullurl.getString(TAG_THUM_FULL_URL);
}

首先没有thumbnail_images只有第二项,以便No value for thumbnail_images使用has进行检查是否可用