如何使用Java中的Jackson将此字符串反序列化为我的POJO表示?

时间:2014-10-02 23:41:10

标签: java jackson

public class UpdateRequest {
    @JsonProperty
    private String id;
    @JsonProperty
    private String type;
    @JsonProperty
    private long version;
    @JsonProperty("fields")
    private Map<String, String> values;
}

我的输入看起来像这样:

{ 
  "id":"1",
  "type":"add",
  "version": 20146780,
  "fields": {
  "pid":"1234",
  "location":"99,100",
  "lastModified":"2013-12-30T22:15:37.482Z"
  }
}

这就是我目前使用杰克逊的方式,但它失败了。我在这里缺少什么?

public Optional<UpdateRequest> deserialize(String message) {
        ObjectMapper mapper = new ObjectMapper();
        Optional<UpdateRequest> updateRequest = Optional
                .empty();
        try {
            updateRequest = Optional.of(mapper.readValue(message,
                    UpdateRequest.class));
            System.out.println(mapper
                    .writeValueAsString(updateRequest));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return updateRequest;
    }

1 个答案:

答案 0 :(得分:0)

不确定Optional类在这里做什么,但您可以通过执行

来获取UpdateRequest对象
UpdateRequest updateRequest = mapper.readValue(message, UpdateRequest.class);

您可能需要查看此文档JacksonInFiveMinutes