杰克逊没有序列化hashmap

时间:2015-03-29 09:32:06

标签: java json jackson

我有这个方法:

private String serializeToJson(T item) {
    String json;
    ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    try {
        json = ow.writeValueAsString(item);
    } catch (IOException e) {
        e.printStackTrace();
        json = "";
    }
    return json;
}

有这个项目:

enter image description here

然而json等于:

{
  "saveDate" : "12:29:29 29-Mar-02015"
}

为什么failureDict没有序列化?

这是项目:

public class FailedResponses {


    HashMap<String, Set<String>> failuresDict;
    public String saveDate;

    public FailedResponses() {

        failuresDict = new HashMap<>();
    }

1 个答案:

答案 0 :(得分:2)

杰克逊将在公共场地或公共吸气者和制定者身上施展魔法。我建议您将对象的字段设置为私有以便更好地封装,并添加公共getter / setter以允许jackson对其进行去/序列化。

就个人而言,我喜欢使用jackson注释来明确表示对象的用途,以便您可以完全控制jackson创建的字段的命名,而无需创建非惯用的getter / setter或变量名称