2015-11-04 1191 views
1

我试图将JsonPrimitive元素转换为Json对象,但有麻烦。我正在使用Android上的com.google.gson库。Json元素(JsonPrimitive)麻烦转换为JsonObject

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

[ 
    { 
    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?

回答

0

您正在查看单个记录周围的报价。看到一个例子:http://www.w3schools.com/json/

+0

它们从服务器周围引用引号发送,但它作为字符串返回。然后该字符串被解析为一个JSON对象'代码'
JsonObject result = new JsonObject();
result.addProperty(“result”,response);
result.addProperty(“code”,code);
result.addProperty(“error”,error);

0

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

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

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

也就是说的JSONObject然后在应用程序中使用的其他地方。它正在提取“result”元素并访问我遇到的内部元素。

0

好吧,所以发现上面的JSON实际上是JsonArray而不是JsonObject。我的coms层遇到了一个解析错误,并通过将响应转换为字符串并将其分回来,尽职尽责地处理错误。我只是改变了我的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" 
     } 
     ] 
    } 
} 

现在一切工作正常。