Как получить представление массива JSON списка POJOS, используя codehaus.jackson - PullRequest
0 голосов
/ 21 февраля 2012

Я ищу способ конвертировать в json список POJO.

мы уже использовали codehaus jackson уже с Spring MVC. Чего я хотел достичь, так это не с помощью вызова ajax с действием @ResponseBody, я думаю о методе util для преобразования списка Pojos вмассив json, но после просмотра примеров и класса ObjectMapper кажется, что не существует прямого пути для достижения этого.для этого они создали класс PojoMapper.

public static String toJson(Object pojo, boolean prettyPrint)
throws JsonMappingException, JsonGenerationException, IOException {
    StringWriter sw = new StringWriter();
    JsonGenerator jg = jf.createJsonGenerator(sw);
    if (prettyPrint) {
        jg.useDefaultPrettyPrinter();
    }
    m.writeValue(jg, pojo);
    return sw.toString();
}

Мне просто интересно, что это рекомендуемый способ.в других примерах они использовали файл, но у меня нет намерения использовать файл, кроме объекта. Так что мне интересно, если кто-нибудь может показать путь.

спасибо за чтение этого

1 Ответ

2 голосов
/ 21 февраля 2012

Вы должны быть в состоянии сделать следующее.

List<POJO> list = ...;
String json = new ObjectMapper().writeValueAsString(list);

Если у вас двунаправленные отношения родитель / ребенок.Затем вам нужно добавить аннотации, чтобы проинформировать Джексона об этих отношениях.

class Parent {

    private Child child;

    @JsonManagedReference
    Child getChild() {return child;}

    void setChild(Child child) {this.child = child;}

}

class Child {

    private Parent parent;

    @JsonBackReference
    Parent getParent() {return parent;}

    void setParent(Parent parent) {this.parent = parent;}        

}

Вышеизложенное информирует Джексона о циклическом характере отношений и не пытается раскрыть бесконечный цикл ссылок.Это работает для Джексона 1.6+.У меня не было этой проблемы раньше, и у меня нет Джексона на этой машине, и поэтому я не смог проверить это должным образом.

Вы также должны отметить, что в документации написаночто родитель не может быть коллекцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...