【问题标题】:How to consume/deserialize .Net WCF service JSON response in Java如何在 Java 中使用/反序列化 .Net WCF 服务 JSON 响应
【发布时间】:2015-02-27 10:42:47
【问题描述】:

我在 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 响应格式有什么问题吗?任何形式的帮助表示赞赏,在此先感谢。

【问题讨论】:

  • 请不要一概而论。这很丑,而且没用。
  • 先生什么意思??
  • 你没有提到你在代码中发现错误的地方!!
  • 当这条线被执行时,我的程序崩溃了 JsonObject company = Companies.get(0).getAsJsonObject();谢谢回复

标签: java c# json wcf serialization


【解决方案1】:

我不确定您为什么会收到该响应 - 它不是有效的 json。它有两个问题

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

如果你不发布你得到的实际错误(提示:即使堆栈溢出很强大,我们还没有开发出读心的能力),很难知道实际问题是什么。

【讨论】:

  • 感谢@Tom 的帮助并指出我的错误,是的,我得到的响应格式错误,现在首先我让我的 json 响应正确,然后可能会解决问题
【解决方案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();     
}

【讨论】:

    猜你喜欢
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2019-01-04
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多