【问题标题】:JSONException: Value ___ of type java.lang.String cannot be converted to JSONObjectJSONException:java.lang.String 类型的值 ___ 无法转换为 JSONObject
【发布时间】:2013-06-30 11:40:30
【问题描述】:

我正在学习以 json 格式从数据库或网站检索数据。我已经编写了解析数据的代码。问题是当我将字符串放入 jsonObject 构造函数时,我得到了 JsonException。我一直在寻找解决这个问题的方法,但似乎我的代码没有任何问题。我从互联网上获得的 json 数据对我来说似乎也不错。我想在这里寻求专家帮助来阅读这个 json 格式的数据。这是我的代码:

JSONObject json=null;

    Toast.makeText(DisplaySubjectsInList.this, "json method", Toast.LENGTH_SHORT).show();

    String temp ="";
    temp = sb.toString();


    try 
    {
        JSONObject jsonObj = new JSONObject(temp);

        JSONArray jsonArray = jsonObj.getJSONArray("contacts");


        ListOfSubjects = new String[jsonArray.length()];

        //subjectAddresses = new String[jsonArray.length()];


        for(int i=0; i<2; i++)
        {
            json = jsonArray.getJSONObject(i);

            ListOfSubjects[i] = json.getString("name"); 
            //subjectAddresses[i]=json.getString("Adress");

            Toast.makeText(DisplaySubjectsInList.this, ListOfSubjects[i], Toast.LENGTH_SHORT).show();
        }

    } 
    catch (JSONException e) 
    {
        Toast.makeText(DisplaySubjectsInList.this, "json failed", Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    }

堆栈跟踪:

06-30 16:28:50.553: W/System.err(1629): org.json.JSONException: Value contacts of type java.lang.String cannot be converted to JSONObject
06-30 16:28:50.553: W/System.err(1629):     at org.json.JSON.typeMismatch(JSON.java:107)
06-30 16:28:50.553: W/System.err(1629):     at org.json.JSONObject.<init>(JSONObject.java:158)
06-30 16:28:50.553: W/System.err(1629):     at org.json.JSONObject.<init>(JSONObject.java:171)
06-30 16:28:50.553: W/System.err(1629):     at com.example.readingdatabaseinternet.DisplaySubjectsInList.convertFromJsonFormat(DisplaySubjectsInList.java:106)
06-30 16:28:50.553: W/System.err(1629):     at com.example.readingdatabaseinternet.DisplaySubjectsInList.onCreate(DisplaySubjectsInList.java:54)
06-30 16:28:50.553: W/System.err(1629):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-30 16:28:50.553: W/System.err(1629):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
06-30 16:28:50.553: W/System.err(1629):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
06-30 16:28:50.553: W/System.err(1629):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-30 16:28:50.553: W/System.err(1629):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
06-30 16:28:50.553: W/System.err(1629):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-30 16:28:50.553: W/System.err(1629):     at android.os.Looper.loop(Looper.java:130)
06-30 16:28:50.553: W/System.err(1629):     at android.app.ActivityThread.main(ActivityThread.java:3683)
06-30 16:28:50.553: W/System.err(1629):     at java.lang.reflect.Method.invokeNative(Native Method)
06-30 16:28:50.553: W/System.err(1629):     at java.lang.reflect.Method.invoke(Method.java:507)
06-30 16:28:50.553: W/System.err(1629):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-30 16:28:50.553: W/System.err(1629):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-30 16:28:50.553: W/System.err(1629):     at dalvik.system.NativeStart.main(Native Method)

这里是json格式数据的链接:Json

我也尝试过非formated json,但它正在返回&lt;p&gt;Forbidden&lt;/p&gt;

问候

【问题讨论】:

  • 请发布完整的堆栈跟踪。
  • StringBuildersb的内容是什么?
  • 代码看起来不错,您可以发布 JSON 的示例吗?该错误清楚地表明您在 JSONArray 中拥有的是字符串而不是 JSONObjects
  • sb string builder 包含从上面提供的链接中检索到的数据。
  • 什么是禁止返回?

标签: java android json


【解决方案1】:

您需要在不格式化的情况下对 json 进行编码。解析器不喜欢“美化”的 json。

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • 他的 json 已格式化,我告诉他不要使用格式化的 json,因为这是导致异常的原因,这不是答案吗?
  • 我也尝试过这个link 未格式化的json,但对代码进行了微小的更改。替换了` JSONObject jsonObj = new JSONObject(temp); JSONArray jsonArray = jsonObj.getJSONArray("contacts");` 在上面的代码中使用JSONArray jsonArray =new JSONArray();,但是我得到了其他错误。我确实从中删除了## END
猜你喜欢
  • 2012-05-03
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多