java - 无法使用 Jackson 将 Object[] 反序列化为类

标签 java json jackson deserialization

我正在尝试将代码 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);

这是类(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: Can not deserialize instance of headers out of START_ARRAY token at [Source: UNKNOWN; line: -1, column: -1] at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:62) at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1307) at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1116) at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1070) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromArray(BeanDeserializerBase.java:1447) at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:173) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:149)

最佳答案

您应该将 headers 指定为数组。

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

关于java - 无法使用 Jackson 将 Object[] 反序列化为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43327976/

相关文章:

java - 解决 javax.net.ssl.SSLHandshakeException : sun. security.validator.ValidatorException : PKIX path building failed Error?

json - 通过 Powershell 定义 Azure 流分析 iot-hub 输入源

java - Jackson json序列化list-of-list的特定属性值

json - 在 R 中创建具有多个子项的 Json 对象

python - 解析 json 数据时仅检索前 2 个值

java - jackson 解析javascript函数

java - 使用 Jackson 2 解码 json 时出错

java - 使用 Bitbucket 配置 Jenkins

java - 为上传的文件创建 URL

java - 如何跳过某些数组索引?