如何解决Grails webservice的Android JSONObject造成问题
|| 好的,我正在从返回JSON的Grails网络服务中查询数据。使用JSONViewer应用查看时,JSON解析良好。当我使用相同的字符串并在Android应用程序中使用JSONObject(string)时,我得到\“ 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还是新的)
解决方法
在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\"
,尝试从String而不是JSONObject创建JSONArray。我没有对此进行测试,但这应该可以解决问题:您有两个嵌套数组,其中包含实际数据。
,通过http://jsonformat.com/在线查看JSON
http://www.freeformatter.com/json-formatter.html
JSON查看器
http://jsonviewer.stack.hu/
将文本粘贴到此处,您可以看到应该解析的内容:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。