【发布时间】:2017-03-10 10:06:54
【问题描述】:
我正在反序列化以下 JSON:
{"self":"http://members.cs.com/rest/api/user?username=abc@cs.com",
"key":"abc@cs.com",
"name":"abc@cs.com",
"emailAddress":"abc@cs.com",
"displayName":"ABC",
"active":true,
"members":{"size":1,"items":[{"name":"member-users","self":"http://members.cs.com/rest/api/user?username=abc@cs.com"}]},
"expand":"members"}
我创建了以下类:
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserList {
private String name;
private String emailAddress;
private String displayName;
private boolean active;
List<MemberName> members = new ArrayList<>();
@JsonCreator
public UserList(@JsonProperty("name") String name, @JsonProperty("emailAddress") String emailAddress, @JsonProperty("displayName") String displayName, @JsonProperty("active") boolean active, @JsonProperty("members") List<MemberName> members) {
this.name = name;
this.emailAddress = emailAddress;
this.displayName = displayName;
this.active = active;
this.members.addAll(groups);
}
//getters
}
@JsonIgnoreProperties(ignoreUnknown = true)
public class MemberName {
private String name;
@JsonCreator
public MemberName(@JsonProperty("name") String name) {
this.name = name;
}
public String getName() {
return name;
}
}
当我不将成员作为属性提供时,反序列化工作正常,我可以看到名称、displayName、active、emailAddress 的值。问题发生在 MemberName 上。
有人可以帮忙吗?
【问题讨论】:
-
从 XML 解析是这个 Web API 的一个选项吗?我在尝试从 JSON 解析时遇到了类似的问题,我最终需要切换到 XML,因为它比 JSON 更明确,尤其是在涉及到像这样的复杂嵌套类型时。很多时候,Web API 可以同时提供 JSON 或 XML,您只需指定所需的响应类型。
-
从 XML 解析不是一种选择,因为我们计划为应用程序中的所有服务调用采用通用方法。使用 JSON 的工作已经在许多其他调用中实现,我不想为此将其更改为 XML。
-
我认为这个问题可能是相关的。 stackoverflow.com/questions/9829403/…
标签: json jackson deserialization