3

我有以下课程....

@XmlType
@XmlRootElement(name = "milestones")
@XmlAccessorType(XmlAccessType.FIELD)
public static class Circle {
    public String type = "circle";
    public double cx;
    public double cy;
    public int r;
    public String title;
    public Integer width;   
}

我正在返回一个圈子列表(实际上使用 JaxRS 和 RestEasy,它使用杰克逊)

我希望 Json 输出像

[{"type":"circle","cx":100.0,"cy":100.0,"r":0,"title":"test1","width":2},
{"type":"circle","cx":150.0,"cy":150.0,"r":0,"title":"test2","width":0}]

在我的开发机器上,这就是输出的样子,但在生产中它就像

[{"milestones":{"type":"circle","cx":100,"cy":100,"r":0,"title":"test1","width":2}}, 
{"milestones":{"type":"circle","cx":150,"cy":150,"r":0,"title":"test2","width":0}}]

有没有办法强制它使用第一种输出格式(没有列出名称)?

谢谢你的帮助,梅森

4

1 回答 1

0

使用相同的代码库,两台机器上的输出不太可能不同。

此行为是由 ObjectMapper 的 WRAP_ROOT_VALUE 功能驱动的,因此您可能想尝试使用下面的代码显式关闭它(您可能还想检查它是否在代码中的某处被显式打开,默认情况下此功能被禁用)

mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, false);

由于您使用的是 RestEasy,因此您需要扩展 RestEasyJacksonProvider 以访问底层 ObjectMapper。

于 2012-06-18T11:07:29.330 回答