Java 使用Jackson 2反序列化JSON
我有一个jsonJava 使用Jackson 2反序列化JSON,java,json,jackson,Java,Json,Jackson,我有一个json [ { "host": { "name": "anotherfullhost", "id": 55602819, "operatingsystem_id": 1073012828, "hostgroup_id": null } }, { "host": { "name": "dhcp.mydomain.net", "id": 219245707, "opera
[
{
"host": {
"name": "anotherfullhost",
"id": 55602819,
"operatingsystem_id": 1073012828,
"hostgroup_id": null
}
},
{
"host": {
"name": "dhcp.mydomain.net",
"id": 219245707,
"operatingsystem_id": 1073012828,
"hostgroup_id": null
}
},
{
"host": {
"name": "my5name.mydomain.net",
"id": 980190962,
"operatingsystem_id": 1073012828,
"hostgroup_id": null
}
}
]
我想通过反序列化上述json来构造一个集合。我应该向下面的宿主类添加什么注释
public class Host {
@JsonProperty("id")
private Long id;
@JsonProperty("name")
private String name;
@JsonProperty("operatingsystem_id")
private Long operatingSystemId;
@JsonProperty("hostgroup_id")
private Long hostGroupId;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getOperatingSystemId() {
return operatingSystemId;
}
public void setOperatingSystemId(Long operatingSystemId) {
this.operatingSystemId = operatingSystemId;
}
public Long getHostGroupId() {
return hostGroupId;
}
public void setHostGroupId(Long hostGroupId) {
this.hostGroupId = hostGroupId;
}
@Override
public String toString() {
return "Host{" +
"name='" + name + '\'' +
'}';
}
}
有什么建议吗
注意-我使用的是jackson 2.x API
谢谢
更新
添加包装器对象就可以做到这一点
public class HostWrapper {
@JsonProperty("host")
private Host host;
public Host getHost() {
return host;
}
public void setHost(Host host) {
this.host = host;
}
@Override
public String toString() {
return host.toString();
}
}
and the below code to deserialize
ObjectMapper mapper = new ObjectMapper();
HostWrapper[] host = mapper.readValue(jsonString, HostWrapper[].class);
请参阅本文-即使使用了不同的API,这应该与您的问题相同:
使用现有代码时会发生什么情况?我执行“Host[]Host=mapper.readValue(jsonString,Host[].class)”,然后我得到一个异常-由以下原因引起:com.fasterxml.jackson.databind.JsonMappingException:Current token not START_OBJECT(需要打开根名称“Host[]),但是START_ARRAYI甚至尝试创建一个名为HostWrapper的包装器对象,它有一个属性Host,但这也会产生相同的异常。我错误地将“展开根”值设置为true。