当前位置: 首页 > 知识库问答 >
问题:

无法使用Jackson将对象[]反序列化为类

夔庆
2023-03-14

我正在尝试将我的代码 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: START_ARRAY无法从 [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(反序列化上下文.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)

共有1个答案

郑茂材
2023-03-14

您应该将标头指定为数组。

headers[] h = OMapper.treeToValue(node.get("headers"), headers[].class);
 类似资料:
  • 我正在编写一个Java spring boot mvc应用程序,它可以导出/导入数据。我写了一个包装类,它应该为学生类序列化/反序列化数据。它适用于导出,但在导入过程中出现错误 下面是我的maven jackson依赖项: 最后是转换的方法: 上面提到了Mapper.ReadValue(stream,typeReference)处的MismatchInputException ObjectMapp

  • 我目前正在开发一个Java web应用程序,它使用Magento REST API公开的JSON数据。api返回的数据示例如下: 我的应用程序中有一个Java类,如下所示: 我想对数据进行反序列化,并将其转换为,但我总是得到以下错误: 这是我用来将JSON响应反序列化为ArrayList的语句行: 有人能分享一些见解吗?我看到一些例子,返回的JSON对象前面没有任何ID。那是因为我做错了什么吗?非

  • 问题内容: 我正在尝试使用Jackson来反序列化存储在CouchDb中的JSON对象。该对象需要反序列化为包含重载方法的pojo。当我尝试从沙发上检索对象并进行反序列化时,出现以下异常: org.ektorp.DbAccessException:org.codehaus.jackson.map.JsonMappingException:属性“乘数”的设置器定义冲突:com.db.commodit

  • 我需要反序列化以下json: 将它的< code>id属性设置为< code>foo_id json属性。 我需要在自定义反序列化程序中执行此操作。实现这一点最简单的方法是什么? 我想以某种方式将json“转换”为 然后将此委托给杰克逊。 在本例中,对象的类型为Foo,但其他对象可能不属于此类。另外,在本例中,json是一个数字,但如果它也是一个字符串,我希望支持。所以,我需要一种通用的方法来做到

  • 我需要一个自定义反序列化器来在复杂的POJO中转换字符串。反序列化工作直到使用反序列化器:特别是使用自定义反序列化器时,我的对象的非对象属性不会序列化。 我有一个restful Web服务,它有一个pojo作为参数。 所以我的类PreentivoWs需要一个方法。这里是类定义: 在jsonObject中,我有一个枚举定义为 但此对象需要转换反序列化程序: 并在财产上标注: fromString方法

  • 我被要求更改jackson映射配置,以便我们(从JSON)反序列化的每个空对象都将被反序列化为NULL。 因此,对于像或这样的json,我希望在java中转换为(而不是空字符串或实例)。