Java Jackson obectMapperwriteValue()未按预期工作

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

我将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 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
    }
]