我想从这个来自这个JSON文件的字符串中获取一个json对象:
{
"categories": {
"category": [
{
"label": "Collaboration",
"thumbnail": "http://mywebite.com/dfsv",
"description": "...",
"contents": {
"@attributes": {
"count": "79"
}
},
"@attributes": {
"id": "ZSQYN2"
}
},
{
"label": "Communication",
"thumbnail": "http://mywebite.com/dfsv",
"description": "...",
"contents": {
"@attributes": {
"count": "43"
}
},
"@attributes": {
"id": "uGQ9MC"
}
}
],
"@attributes": {
"page": "12",
"limit": "0",
"count": "111",
"lang": "en"
}
}
}
我正在使用此代码:
JSONObject obj = new JSONObject(myString);
我收到此错误消息:
类型org.json.JSONArray的值...无法转换为JSONObject
如果我这样做:
JSONArray obj = new JSONArray(myString);
我收到此错误消息:
类型org.json.JSONObject的值...无法转换为JSONArray
...
你有什么想法吗?
答案 0 :(得分:1)
JSONArray
和JSONObject
是两个不同的东西,不应该彼此类型兼容,所以这些错误是有意义的。这是一个JSONArray:
["foo", "bar", "baz"]
这是一个JSONObject:
{ "foo" : "bar", "baz" : "quux" }
您可能正在寻找JSONElement
,其中像Google's GSON这样的API是数组和对象之间的通用超类。
在Android JSON API下,它们也不兼容。
答案 1 :(得分:1)
我终于找到了解决方案!
我替换了
JSONObject obj = new JSONObject(myString);
by:
JSONObject obj = new JSONObject(myString.substring(myString.indexOf("{"), myString.lastIndexOf("}") + 1));
找到答案here
希望它会帮助别人!