目前我的表格如下:
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)
。
但不确定它是否是正确的方法,可能已经存在任何默认实现。
答案 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]}