春天杰克逊 - 未被认可的领域\"回应\"

时间:2017-06-13 20:46:33

标签: java json jackson

我需要将带有jackson的jSon String序列化为Object。

我得到的字符串是

{"response":{"status":1,"count":"90120"}}

我的目标是

@JsonRootName("response")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Wrapper {

    private String count;

    private int status;

    private String registration_error;

    private int usable;

// getters and setters

所以,这就是我试图获取我的Wrapper的方式

String response = {"response":{"status":1,"count":"90120"}};
        ObjectMapper mapper = new ObjectMapper();
        Wrapper w = mapper.readValue(response, Wrapper.class);

但是当我记录它时我得到了

Wrapper [count=null, status=0, registration_error=null, usable=0]

它有什么问题?

由于

1 个答案:

答案 0 :(得分:0)

您使用@jsonRootName注释是正确的。但是,注释本身不起作用。您必须为对象映射器配置DeserializationFeature。您的代码应如下所示:

    String response="{\"response\":{\"status\":1,\"count\":\"90120\"}}";
            ObjectMapper mapper = new ObjectMapper();

            mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);

 //mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); This is for serailization time
            Wrapper wrapper = mapper.readValue(response, Wrapper.class);

检查包装器,它具有json中给出的计数和状态。