Java Jackson obectMapperwriteValue()未按预期工作
我将data.json文件反序列化为Customer.java。并尝试将Customer.java序列化为shopping.json。但它在序列化的json数据中显示了两个list对象(list和food)。应该只有一个列表(即食物)。出了什么问题?请参阅下面的代码:Java Jackson obectMapperwriteValue()未按预期工作,java,json,jackson,Java,Json,Jackson,我将data.json文件反序列化为Customer.java。并尝试将Customer.java序列化为shopping.json。但它在序列化的json数据中显示了两个list对象(list和food)。应该只有一个列表(即食物)。出了什么问题?请参阅下面的代码: ShoppingList.java private String name; private int amount; public String getName() { return name; } public voi
ShoppingList.java
private String name;
private int amount;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
@Override
public String toString() {
return "ShoppingList [name=" + name + ", amount=" + amount + "]";
}
Customer.java
private String date;
private String name;
private String store;
@JsonProperty("food")
private List<ShoppingList> food;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStore() {
return store;
}
public void setStore(String store) {
this.store = store;
}
public List<ShoppingList> getList() {
return food;
}
public void setList(List<ShoppingList> list) {
this.food = list;
}
@Override
public String toString() {
return "Customer [date=" + date + ", name=" + name + ", store=" + store + ", food=" + food + "]";
}
data.json
{
"date": "2016-07-14",
"name": "Candice",
"store": "aStore",
"food": [
{
"name": "eggs",
"amount": 6
},
{
"name": "Chicken",
"amount": 1
},
{
"name": "Bananas",
"amount": 5
},
{
"name": "Pasta",
"amount": 1
}
]
}
shopping.json
{
"date": "2016-07-14",
"name": "Candice",
"store": "aStore",
"list": [ //This list is generated extra.
{
"name": "eggs",
"amount": 6
},
{
"name": "Chicken",
"amount": 1
},
{
"name": "Bananas",
"amount": 5
},
{
"name": "Pasta",
"amount": 1
}
],
"food": [
{
"name": "eggs",
"amount": 6
},
{
"name": "Chicken",
"amount": 1
},
{
"name": "Bananas",
"amount": 5
},
{
"name": "Pasta",
"amount": 1
}
]
}
我尝试了不同的方法,但没有成功。
提前感谢。这可能是您的命名造成的。将
getList
方法和setList
方法重命名为getFood
和setFood
,然后重试。这是因为类Customer
中有getList
和setList
方法。尝试将它们重命名为getFood
和setFood
。或者将@JsonIgnoreProperties({“list”})
放在Customer
类上,使Jackson忽略list
属性。谢谢@jesper的回答。成功了。
{
"date": "2016-07-14",
"name": "Candice",
"store": "aStore",
"list": [ //This list is generated extra.
{
"name": "eggs",
"amount": 6
},
{
"name": "Chicken",
"amount": 1
},
{
"name": "Bananas",
"amount": 5
},
{
"name": "Pasta",
"amount": 1
}
],
"food": [
{
"name": "eggs",
"amount": 6
},
{
"name": "Chicken",
"amount": 1
},
{
"name": "Bananas",
"amount": 5
},
{
"name": "Pasta",
"amount": 1
}
]