【问题标题】:Unable to deserialize Object[] to class using Jackson无法使用 Jackson 将 Object[] 反序列化为类
【发布时间】:2017-09-05 18:44:45
【问题描述】:

我正在尝试将我的代码 Json 数组中的这个 Json 元素反序列化为自定义类.. 但我不能:

ObjectMapper OMapper = new ObjectMapper();
OMapper.configure(Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, true);
OMapper.configure(Feature.ALLOW_SINGLE_QUOTES, true);
OMapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
OMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
OMapper.enable(SerializationFeature.INDENT_OUTPUT);

JsonNode node = OMapper.readTree("{\"headers\":[\"st1\", \"ddf2\", \"sdsd\"]}");


headers h = OMapper.treeToValue(node.get("headers"), headers.class);

这是类:

public class headers{   
    public headers(){
        System.out.println("dssdsd");

    }

    @JsonSetter
    public void set(){
        System.out.println("ASAASAAS");
    }

    @JsonGetter()
    public JsonNode get(int index){
        System.out.println("XXXXXXXXXx");
        return null;
    }
}

但我收到此错误:

com.fasterxml.jackson.databind.exc.MismatchedInputException: 不能 在 [来源: 未知;行:-1,列:-1] 在 com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:62) 在 com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1307) 在 com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1116) 在 com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1070) 在 com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromArray(BeanDeserializerBase.java:1447) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:173) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:149)

【问题讨论】:

    标签: java json jackson deserialization


    【解决方案1】:

    您应该将headers 指定为一个数组。

    headers[] h = OMapper.treeToValue(node.get("headers"), headers[].class);
    

    【讨论】:

    • 谢谢,但是如何从 headers[] 读取 JsonNode 呢? getter 和 setter ?
    猜你喜欢
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 2016-04-25
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    相关资源
    最近更新 更多