【问题标题】:Android JSON: JSONArray cannot be converted to JSONObjectAndroid JSON:无法将 JSONArray 转换为 JSONObject
【发布时间】:2012-08-28 17:06:26
【问题描述】:

我正在尝试解析从服务器获取的 JSON 响应,但收到错误消息:JSONArray 无法转换为 JSONObject。

这里是logcat:

08-28 18:56:08.083: W/System.err(1037): org.json.JSONException: Value [{"content":"<p class=\"bodytext\">erhalten Sie einen Überblick über die Aktivitäten der SKBF im Jahr 2011 im aktuellen Jahresbericht.<br \/><br \/><a href=\"de\/portraet\/auftrag\/#c113\" class=\"internal-link\" >SKBF Jahresbericht 2011<\/a><\/p>","pubDate":"01.06.12","category":"Allgemeine News","title":"SKBF Jahresbericht 2011","description":"Wenn Sie wissen wollen, was die SKBF macht","link":"http:\/\/www.skbf-csre.ch\/de\/news\/news-detail\/?tx_ttnews%5BbackPid%5D=2&tx_ttnews%5Btt_news%5D=80&cHash=1274043c236945bf6e592329e6742ebf"}] at 0 of type org.json.JSONArray cannot be converted to JSONObject
08-28 18:56:08.083: W/System.err(1037):     at org.json.JSON.typeMismatch(JSON.java:96)
08-28 18:56:08.083: W/System.err(1037):     at org.json.JSONArray.getJSONObject(JSONArray.java:484)
08-28 18:56:08.093: W/System.err(1037):     at com.example.skbf_csre.SKBFActivity.onCreate(SKBFActivity.java:55)
08-28 18:56:08.093: W/System.err(1037):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
08-28 18:56:08.093: W/System.err(1037):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1836)
08-28 18:56:08.103: W/System.err(1037):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893)
08-28 18:56:08.103: W/System.err(1037):     at android.app.ActivityThread.access$1500(ActivityThread.java:135)
08-28 18:56:08.103: W/System.err(1037):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
08-28 18:56:08.103: W/System.err(1037):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-28 18:56:08.113: W/System.err(1037):     at android.os.Looper.loop(Looper.java:150)
08-28 18:56:08.113: W/System.err(1037):     at android.app.ActivityThread.main(ActivityThread.java:4389)
08-28 18:56:08.113: W/System.err(1037):     at java.lang.reflect.Method.invokeNative(Native Method)
08-28 18:56:08.113: W/System.err(1037):     at java.lang.reflect.Method.invoke(Method.java:507)
08-28 18:56:08.123: W/System.err(1037):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
08-28 18:56:08.123: W/System.err(1037):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
08-28 18:56:08.123: W/System.err(1037):     at dalvik.system.NativeStart.main(Native Method)

我想做的是:

for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject jsonObject = jsonArray.getJSONObject(i);
        System.out.println(jsonObject.getString("title"));
}

非常感谢您的帮助。

【问题讨论】:

  • 请发布一个示例 JSON 文档作为测试用例。谢谢。
  • 感谢您的回答,JSON 可以在这里找到:skbf-csre.ch/apps/iphone/rss/…
  • jsonArray 是如何实现的? org.json.JSONArray.getJSONObject 的错误可能是因为 jsonArray 中存储的不再是数组。尝试先将其设为 JsonObject,然后再设为 jsonArray。

标签: android json


【解决方案1】:

您的数据挖掘似乎不够深入。你所拥有的是一个包含多个数组的数组,每个数组都包含一个对象。试试这个:

for (int i = 0; i < jsonArray.length(); i++) {
        JSONArray innerJsonArray = jsonArray.getJSONArray(i);
        JSONObject jsonObject = innerJsonArray.getJSONObject(0);
        System.out.println(jsonObject.getString("title"));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 2016-01-12
    相关资源
    最近更新 更多