Spring jackson - 将json映射到特定的对象字段

时间:2017-09-04 14:24:00

标签: java json

我正在尝试反序列化一个json字符串以匹配一个对象但我不能用JSONProperties

这是我的对象

 public class Feedback{

    @JsonProperty("event_id")
    private long eventId;

    //getter and setter


    }

我得到的JSON字符串是

{..., "event_id":1111111111, ....}

当我将字符串反序列化为Feedback时,刚跳过eventId ......

我以这种方式反序列化

ObjectMapper mapper = new ObjectMapper();
Feedback feedback = mapper.readValue(json, Feedback);

我在Feedback中还有其他字段,它们具有相同的json字段名称,并且它们显然正确映射

2 个答案:

答案 0 :(得分:4)

注释getter而不是注释字段:

public class Feedback {

    private long eventId;

    @JsonProperty("event_id")
    public long getEventId() {
        return eventId;
    }

    public void setEventId(long eventId) {
        this.eventId = eventId;
    }
}

答案 1 :(得分:0)

这是一个非常常见的错误。 一定要使用

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;

OR

import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.ObjectMapper;

混合导入会导致问题。

第一个是新版本,第二个是旧版本。使用第一个;)