繁体   English   中英

如何在Java中使用/反序列化.Net WCF服务JSON响应

[英]How to consume/deserialize .Net WCF service JSON response in Java

在Java中使用/反序列化WCF .NET JSON响应时遇到问题。 JSON响应采用以下格式。

{"d":"[
{\"ID\":123,\"Company\":\"Microsoft\",\"Country\":\"USA\",
\"website\":\"http:\/\/www.microsoft.com\",
\"FirstName\":\"john\",\"Email\":\"abc@gmail.com\"},

{\"ID\":124,\"Company\":\"Google\",\"Country\":\"USA\",
\"website\":\"http:\/\/www.google.com\",
\"FirstName\":\"john\",\"Email\":\"abc@gmail.com\"},

{\"ID\":125,\"Company\":\"Apple\",\"Country\":\"USA\",
\"website\":\"http:\/\/www.abc.com\",
\"FirstName\":\"john\",\"Email\":\"abc@gmail.com\"}
]"}

在Java代码方面,我在反序列化此json响应以获取对象及其对应属性方面遇到问题。

这是当前用于反序列化json响应的Java代码。

String companyTitle = "";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonResponseString);
if (element.isJsonObject()) {
JsonArray companies = element.getAsJsonArray();
JsonObject company = companies.get(0).getAsJsonObject();
companyTitle = company .get("Company").getAsString();     
}

JSON响应格式有什么问题吗? 感谢您提供任何帮助。

我不确定为什么会收到该响应-无效的json。 它有两点错误

  1. 外部方括号不应用引号引起来。
  2. 需要删除引号转义字符(不确定是否只是将它们放入?)

如果没有发布实际的错误,您将得到提示(提示:即使堆栈溢出功能强大,但我们尚未开发出能够读取思维的功能),很难知道实际的问题是什么。

汤姆是对的。 有效的JSON应该如下所示:

{"d":[
    {"ID":123,"Company":"Microsoft","Country":"USA",
    "website":"http://www.microsoft.com",
    "FirstName":"john","Email":"abc@gmail.com"},

    {"ID":124,"Company":"Google","Country":"USA",
    "website":"http://www.google.com",
    "FirstName":"john","Email":"abc@gmail.com"},

    {"ID":125,"Company":"Apple","Country":"USA",
    "website":"http://www.aabc.com",
    "FirstName":"john","Email":"abc@gmail.com"}
]}

和你的代码是这样的:

String companyTitle = "";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonResponseString);
JsonObject object = element.getAsJsonObject();
if (object.isJsonObject()) {
    JsonArray companies = object.getAsJsonArray("d");
    JsonObject company = companies.get(0).getAsJsonObject();
    companyTitle = company .get("Company").getAsString();     
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM