iro*_*xxx 5 java serialization json jackson
美好的一天,我想在将Pojo序列化为json时删除属性名称.我有以下课程
public class Field {
private List<SubFieldItems> subFieldItems;
public List<SubFieldItems> getSubFieldItems() {
return subFieldItems;
}
public void setSubFieldItems(List<SubFieldItems> subFieldItems) {
this.subFieldItems = subFieldItems;
}
}
Run Code Online (Sandbox Code Playgroud)
和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 +
'}';
}*/
}
Run Code Online (Sandbox Code Playgroud)
当我序列化时,json输出是
{
"field": {
"subFieldItems": [
{
"name": "brands",
" items": []
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
但我希望没有像这样的属性名称的subFieldItems值:
{
"field": {
[
{
"name": "brands",
" items": []
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用杰克逊注释,我尝试在toString方法中使用@JsonValue来强制它,就像在评论中一样,但我不断得到奇怪的结果.请任何帮助表示赞赏.谢谢
Fed*_*ner 11
你想要的JSON是无效的,也许这就是你想要的:
{
"field": [
{
"name": "brands",
"items": []
}
]
}
Run Code Online (Sandbox Code Playgroud)
(注意我之后移除了支撑"field":,以及它匹配的闭合支撑).
在这种情况下,您可能会发现有用的@JsonValue注释:
@JsonValue:per-property标记表示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;
}
}
Run Code Online (Sandbox Code Playgroud)