【发布时间】:2015-04-10 13:59:56
【问题描述】:
我在 JSON 中获得了两次根元素。
这是我的模型:
@JsonRootName(value="volumes")
@XmlRootElement(name = "volumes")
public class VolumeDetails {
@XmlElement(name = "volume")
private List<VolumeDetail> volume;
public List<VolumeDetail> getVolumes() {
if (volume == null) {
volume = new ArrayList<VolumeDetail>();
}
return volume;
}
}
我正在使用杰克逊对象映射器,例如:
ObjectMapper om = new ObjectMapper().enable(SerializationConfig.Feature.WRAP_ROOT_VALUE);
try {
String jsonResponse = om.writeValueAsString(volumeDetails);
return Response.ok().entity(jsonResponse).build();
}
O/P:
{
"volumes":{
"volumes":[
{
"status":"available",
"id":"vol-1"
},
{
"status":"unavailable",
"id":"vol-2"
}
]
}
}
预期的 O/P:
{
"volumes":[
{
"status":"available",
"id":"vol-1"
},
{
"status":"unavailable",
"id":"vol-2"
}
]
}
volumes 标签来了两次,我不想要,有什么方法可以抑制它。 如果我删除@JsonRootName 注释和序列化功能,我得到的是“volume”而不是“volumes”,即@xmlElement(name="volume"),我的输出看起来像:
{
"volume":[
{
"status":"available",
"id":"vol-1"
},
{
"status":"unavailable",
"id":"vol-2"
}
]
}
【问题讨论】: