杰克逊:将逗号分隔的字符串序列化为json数组

时间:2016-01-29 10:57:51

标签: java json jackson

目前我的表格如下:

public class Form {

    private String listOfItems;

    public String getListOfItems() {
        return listOfItems;
    }

    public void setListOfItems(String listOfItems) {
        this.listOfItems= listOfItems;
    }

}

对于instanse listOfItems等于以下字符串"1,2,3"

目标是将此表单序列化为以下格式:

{
    "listOfItems": [1, 2, 3]
}

知道如何正确地做这样的事情会很好吗?据我所知,可以创建一些自定义序列化程序,然后用它标记适当的getter方法,如@JsonSerialize(using = SomeCustomSerializer)

但不确定它是否是正确的方法,可能已经存在任何默认实现。

1 个答案:

答案 0 :(得分:0)

如果您可以修改Form课程:

public class Form {

    private String listOfItems;

    public String getListOfItems() {
        return listOfItems;
    }

    public void setListOfItems(String listOfItems) {
        this.listOfItems = listOfItems;
    }

    @JsonProperty("listOfItems")
    public List<Integer> getArrayListOfItems() {
        if (listOfItems != null) {
            List<Integer> items = new ArrayList();
            for (String s : listOfItems.split(",")) {
                items.add(Integer.parseInt(s)); // May throw NumberFormatException
            }
            return items;
        }
        return null;
    }
}

默认情况下,杰克逊会寻找序列化的吸气剂。您可以使用@JsonProperty注释覆盖它。

    ObjectMapper mapper = new ObjectMapper();
    Form form = new Form();
    form.setListOfItems("1,2,3");

    System.out.print(mapper.writeValueAsString(form));

输出:

{"listOfItems":[1,2,3]}