Джексон 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;   
}

Я возвращаю список кругов (фактически используя 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}}]

Есть ли способ заставить его использовать первый выходной формат (без указанного имени)?

Спасибо за помощь, Мейсон.


person user1461057    schedule 16.06.2012    source источник


Ответы (1)


С одной и той же кодовой базой маловероятно, что выходные данные на двух машинах будут разными.

Это поведение обусловлено функцией WRAP_ROOT_VALUE в ObjectMapper, поэтому вы можете попробовать явно отключить ее, используя приведенный ниже код (вы также можете проверить, включена ли она явно где-то в вашем коде, так как по умолчанию эта функция выключен)

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

Поскольку вы используете RestEasy, вам потребуется расширить RestEasyJacksonProvider, чтобы получить доступ к базовому ObjectMapper.

person gresdiplitude    schedule 18.06.2012
comment
Спасибо большое. Я пошел дальше и вручную создал JSON в виде строки, но, надеюсь, это поможет кому-то другому или мне в будущем. - person user1461057; 19.06.2012