好的,我正在从返回JSON的Grails webservice中查询数据。使用JSONViewer应用程序查看时的JSON解析正常。当我在我的Android应用程序中使用相同的字符串并使用JSONObject(字符串)时,我得到“String的值无法转换为JSONObject。”
这是我的JSON字符串
[[{"class":"mygrails.TopTen","id":491,"ttAmount":14200000,"ttMlId":402,"ttRank":1,"ttWeekId":1108},{"class":"mygrails.MovieList","id":402,"mlApproved":1,"mlApprovedId":5,"mlMovieId":"GNOMEOAN","mlReleaseDate":"2011-03-08T07:41:45Z","mlTitle":"Gnomeo and Juliet","mlWeekId":1106}]]
现在JSON来自SQL数据的标准JSON转换,使用groovy文件中的render通过导入grails.converters.JSON。
... //(call to render JSON in the groovy file)
def a
a = Table.findAll("from someTable as st where st.id=" params.id)
render a as JSON
...
所以我不确定我做错了什么以及为什么JSON对我来说有点不对劲。 (仍然是JSON的新手)
答案 0 :(得分:2)
尝试从String而不是JSONObject创建JSONArray。我没有对此进行测试,但应该可以解决这个问题:你有两个嵌套数组,其中包含实际数据。
答案 1 :(得分:2)
在json中如果你看到“[]”表示它是一个json数组,如果你看到“{}”则它是一个json对象。然后两者都可以将另一个嵌套在里面。
在你的情况下,字符串以json数组开头。
所以尝试类似下面的内容
String str = "[[{"class":"mygrails.TopTen","id":491,"ttAmount":14200000,"ttMlId":402,"ttRank":1,"ttWeekId":1108},{"class":"mygrails.MovieList","id":402,"mlApproved":1,"mlApprovedId":5,"mlMovieId":"GNOMEOAN","mlReleaseDate":"2011-03-08T07:41:45Z","mlTitle":"Gnomeo and Juliet","mlWeekId":1106}]]";
JSONArray jsonArray = new JSONArray(str);
jsonArray = jsonArray.getJSONArray(0);
JSONObject jsonObject = jsonArray.getJSONObject(0);
String class = jsonObject.getString("class"); // class will value "mygrails.TopTen"
答案 2 :(得分:0)
http://www.freeformatter.com/json-formatter.html
JSON Viewer http://jsonviewer.stack.hu/
将文字粘贴在那里,您可以看到应该解析的内容: