错误解析JSON,但代码似乎正常

时间:2012-05-11 20:19:21

标签: java android json parsing exception

首先,感谢您阅读我的问题。

作为网络请求的结果,我有以下Json。

{"GetCommunicationsResult":"
   {\"Rows\":
      [{\"Data\":\"2011-12-16T00:00:00\",\"Teacher\":\"Surname Name\",
       \"Communication\":\"bla bla bla and bla bla bla\"},

       {\"Data\":\"2011-10-18T00:00:00\",\"Teacher\":\"Surname Name\",
        \"Communication\":\"bla bla bla and bla bla bla\"}]
   }"
 }

我需要对其进行解码才能使用我的程序。

  1. 首先,我将JSON作为字符串资源

    JSONObject jsonData = readUrl("http://myWebSite/folder/site.svc/Communications/000884");
    

    (readurl是一种将json作为字符串返回的方法)

  2. 然后我通过使用此字符串

    创建一个JSONObject
    JSONObject BaseObject = new JSONObject(jsonData);   
    

    (奇怪的是,JSONObject构造函数不提供任何Inputstream或Reader 参数,但只有字符串或类似的)

  3. 最后,我尝试减少我的JSON

    JSONObject DerivatedObject=BaseObject.getJSONObject("GetCommunicationsResult");
    
  4. 但我遇到一个奇怪的例外:

    Value {"Rows":[{"Data":"2011-12-16T00:00:00","Teacher":"Surname Name","Communication":"bla bla bla and bla bla bla"},{"Data":"2011-10-18T00:00:00","Teacher":"Surname Name","Communication":"bla bla bla and bla bla bla"}]} 
    at GetCommunicationsResult of type java.lang.String cannot be converted to JSONObject
    

    关于如何解决这个问题的任何建议?
    我无法找出为什么我的代码实际上找到了JSON但它无法解码它。

1 个答案:

答案 0 :(得分:4)

你有错误的报价。请参阅此行的最后一个公开引用:

{"GetCommunicationsResult":"

这导致值成为字符串而不是JSONObject。你可以告诉它是一个字符串,因为所有其他的'都在JSON中转义:

{\"Rows\":

那应该是;

{"Rows":

因此导致该问题的服务器出现问题。也许你正在做这样的事情:

jsonObject.put("GetCommunicationsResult", someJsonObject.toString() );