如何使用codehaus.jackson获取POJOS列表的JSON数组表示

时间:2012-02-21 11:39:42

标签: java json spring jackson

我正在寻找一种方法将jjo转换为POJO列表。

我们一直在使用codehaus jackson已经使用spring MVC。我想要实现的不是在使用@ResponseBody动作的ajax调用中,我正在考虑使用util方法来转换Pojos列表到了json数组,但在查看examplesObjectMapper class后,似乎没有直接的方法来实现它。他们创建了一个类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 个答案:

答案 0 :(得分:2)

你应该能够做到以下几点。

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

}

上面告诉杰克逊这种关系的周期性,并没有试图揭示无限循环的引用。这适用于Jackson 1.6+。我之前没有遇到过这个问题,我没有杰克逊在这台机器上,因此无法正确测试。

您还应注意documentation表示父母不能成为集合。