Json Element(JsonPrimitive)无法转换为JsonObject

时间:2015-11-04 00:05:33

标签: android json

我试图将JsonPrimitive元素转换为Json对象,但遇到了麻烦。我在Android上使用com.google.gson lib。

在REST调用之后,从服务器返回JSON元素。元素看起来像这样。

[
  {
    id=95018, 
    date=2015-05-10 08:38:42, 
    message=some text with a long message, 
    from=wbadmin, 
    subject=message subject, 
    lastPostDate=2015-05-10 08:38:42
  }, 
  {
    id=95019, 
    date=2015-05-10 08:38:42, 
    message=some text with a long message, 
    from=wbadmin, 
    subject=message subject, 
    lastPostDate=2015-05-10 08:38:42
  },
  {
    id=95020, 
    date=2015-05-10 08:38:42, 
    message=some text with a long message, 
    from=wbadmin, 
    subject=message subject, 
    lastPostDate=2015-05-10 08:38:42
  }
]

到目前为止,我所尝试的一切似乎都没有效果。我是否必须将其转换为字符串,将其转义然后转换回JSON?

3 个答案:

答案 0 :(得分:0)

您缺少各个记录的引号。请在此处查看示例:http://www.w3schools.com/json/

答案 1 :(得分:0)

感谢drdawud的回应。我的评论最终变得一团糟,所以我将在这里添加更多信息。

JSON在服务器上生成,并通过其余调用以字符串形式返回。这个字符串确实有引号。然后将该字符串添加到JSON对象中。



JsonObject result = new JsonObject();
result.addProperty("result", response);
result.addProperty("code", code);
result.addProperty("error", error);




然后在应用程序的其他地方使用JsonObject。它正在提取"结果"元素和访问我遇到问题的内在元素。

答案 2 :(得分:0)

好的,所以发现上面的JSON实际上是一个JsonArray而不是JsonObject。我的coms Layer遇到了一个解析错误,并通过将响应转换为String并将其吐回来尽职尽责地处理错误。我只是将我的JSON改为......

{
  "Data":
    {
      [
        {
          "id"="95018", 
          "date"="2015-05-10 08:38:42", 
          "message"="some text with a long message", 
          "from"="wbadmin", 
          "subject"="message subject", 
          "lastPostDate"="2015-05-10 08:38:42"
        }, 
        {
          "id"="95019", 
          "date"="2015-05-10 08:38:42", 
          "message"="some text with a long message", 
          "from"="wbadmin", 
          "subject"="message subject", 
          "lastPostDate"="2015-05-10 08:38:42"
        },
        {
          "id"="95020", 
          "date"="2015-05-10 08:38:42", 
          "message"="some text with a long message", 
          "from"="wbadmin", 
          "subject"="message subject", 
          "lastPostDate"="2015-05-10 08:38:42"
        }
      ]
    }
}

现在一切正常。