【问题标题】:Trouble with Android JSONObject from Grails webservice来自 Grails webservice 的 Android JSONObject 问题
【发布时间】:2011-04-14 07:47:43
【问题描述】:

好的,我正在从返回 JSON 的 Grails Web 服务中查询数据。使用 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 来自于使用从 groovy 文件通过导入 grails.converters.JSON 渲染的 SQL 数据的标准 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 的新手)

【问题讨论】:

标签: android json grails


【解决方案1】:

在 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"

【讨论】:

  • 感谢您的帮助!由于我是 JSON 新手,所以没有意识到它也可以返回 Array。有没有办法强制 groovy 代码渲染对象而不是数组?
  • 我不熟悉 groovy,但我想有可能。我认为目前您正在将 sql select 的整个结果集转换为 json,我猜结果集是一个数组。为了返回一个 json 对象,您应该只转换数组中的项目。
【解决方案2】:

尝试从 String 而不是 JSONObject 创建 JSONArray。我没有对此进行测试,但这应该可以解决问题:您有两个嵌套数组,其中包含实际数据。

【讨论】:

    【解决方案3】:

    通过http://jsonformat.com/在线查看您的 JSON

    http://www.freeformatter.com/json-formatter.html

    JSON 查看器 http://jsonviewer.stack.hu/

    将你的文本粘贴到那里,你可以看到你应该解析什么:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2012-05-04
      相关资源
      最近更新 更多