2012-06-16 162 views
3

我有下面的类....杰克逊JSON,帮助格式化JSON

@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; 
} 

我回圈(实际使用与RestEasy的,它使用杰克逊JAXRS)

的列表

我想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}}] 

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

感谢您的帮助, 梅森

回答

0

随着同一个代码库的高度不可能的输出是两台机器上的不同。

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

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

由于您使用RestEasy的,则需要延长RestEasyJacksonProvider获得访问底层ObjectMapper。

+0

非常感谢。我继续前进并手动创建JSON作为字符串,但希望这可以帮助其他人或未来我。 – user1461057