美好的一天,我想在将Pojo序列化为json时删除属性名称。我有以下课程
public class Field {
private List<SubFieldItems> subFieldItems;
public List<SubFieldItems> getSubFieldItems() {
return subFieldItems;
}
public void setSubFieldItems(List<SubFieldItems> subFieldItems) {
this.subFieldItems = subFieldItems;
}
}
和SubFieldItems类:
public class SubFieldItems {
@JsonPropertyOrder
private String name;
private List<String> items;
public SubFieldItems(String name, List<String> items) {
this.name = name;
this.items = items;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getItems() {
return items;
}
public void setItems(List<String> items) {
this.items = items;
}
//tried doing this
/* @JsonValue
@Override
public String toString() {
return "{" +
" \"name\":" + "\"" + name + "\"" +
",\" items\":" + items +
'}';
}*/
}
当我序列化时,json输出是
{
"field": {
"subFieldItems": [
{
"name": "brands",
" items": []
}
]
}
}
但我想让subFieldItems值没有像这样的属性名:
{
"field": {
[
{
"name": "brands",
" items": []
}
]
}
}
我可以使用杰克逊注释,我尝试在toString方法中使用@JsonValue来强制注释,但我不断得到奇怪的结果。请任何帮助表示赞赏。感谢
答案 0 :(得分:11)
您想要的JSON无效,也许这就是您想要的:
{
"field": [
{
"name": "brands",
"items": []
}
]
}
(请注意,我已经在"field":
之后移除了支撑,以及其匹配的右括号。)
在这种情况下,您可能会发现@JsonValue
annotation有用:
@JsonValue
:每个属性标记表示POJO应该使用属性的值来完成序列化,通常是java.lang.String(类似于注释toString()方法)。
试试这个:
public class Field {
private List<SubFieldItems> subFieldItems;
@JsonValue
public List<SubFieldItems> getSubFieldItems() {
return subFieldItems;
}
public void setSubFieldItems(List<SubFieldItems> subFieldItems) {
this.subFieldItems = subFieldItems;
}
}