我试图将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?
答案 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"
}
]
}
}
现在一切正常。