首先,感谢您阅读我的问题。
作为网络请求的结果,我有以下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\"}]
}"
}
我需要对其进行解码才能使用我的程序。
首先,我将JSON作为字符串资源
JSONObject jsonData = readUrl("http://myWebSite/folder/site.svc/Communications/000884");
(readurl是一种将json作为字符串返回的方法)
然后我通过使用此字符串
创建一个JSONObjectJSONObject BaseObject = new JSONObject(jsonData);
(奇怪的是,JSONObject构造函数不提供任何Inputstream或Reader 参数,但只有字符串或类似的)
最后,我尝试减少我的JSON
JSONObject DerivatedObject=BaseObject.getJSONObject("GetCommunicationsResult");
但我遇到一个奇怪的例外:
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但它无法解码它。
答案 0 :(得分:4)
你有错误的报价。请参阅此行的最后一个公开引用:
{"GetCommunicationsResult":"
这导致值成为字符串而不是JSONObject。你可以告诉它是一个字符串,因为所有其他的'都在JSON中转义:
{\"Rows\":
那应该是;
{"Rows":
因此导致该问题的服务器出现问题。也许你正在做这样的事情:
jsonObject.put("GetCommunicationsResult", someJsonObject.toString() );