简体   繁体   English

编写自定义反序列化器后,如何使用Jackson来反序列化对象数组

[英]How to use Jackson to deserialize an array of objects when we have written custom deserializer

i have written one custom deserializer , which will take the string and deserialize it public static class MyDeserializer extends JsonDeserializer { 我已经编写了一个自定义反序列化器,它将使用字符串并将其反序列化。公共静态类MyDeserializer扩展了JsonDeserializer {

  @Override
  public MyClass deserialize(JsonParser parser,
                                DeserializationContext deserializer) throws IOException {
            Myclass obj = new Myclass();
            while(!parser.isClosed()) {

            JsonToken jsonToken = parser.nextToken();

            if (JsonToken.FIELD_NAME.equals(jsonToken)) {

                String fieldName = parser.getCurrentName();
                System.out.println(fieldName);
                jsonToken = parser.nextToken();

                switch(fieldName) { 
                -----set the fields of obj
                }
               }
            return obj
          }

This can serialize one object at a time , i want to create a list of objects 这一次可以序列化一个对象,我想创建一个对象列表

tried this 试试这个

    JavaType mapType = MAPPER.getTypeFactory().constructCollectionType(List.class, Myclass.class);
    List <MyClass> mylist = (List<MyClass>)MAPPER.readValue(jsonString,mapType);

This is not working and no error is thrown , just stuck while deserializing it Do we need to split json array and call deserializer for every object or modify the custom deserializer to create list of objects 这是行不通的,并且没有引发任何错误,只是在反序列化时卡住了吗?我们需要拆分json数组并为每个对象调用解串器,还是修改自定义解串器以创建对象列表

Hm, I do not get why there is a need for a custom deserializer at all. 嗯,我不明白为什么根本不需要自定义解串器。

IMHO you could just do: 恕我直言,你可以做:

List <MyClass> mylist = MAPPER.readValue(jsonString, new TypeReference<List<MyClass>>() {});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何让Jackson在自定义反序列化器中反序列化嵌套对象 - How to let Jackson deserialize nested objects in custom deserializer Jackson:自定义反序列化器:无法使用数组反序列化 XML - Jackson: custom deserializer: cannot deserialize XML with array Jackson:如何使用带有@JsonAnySetter 注释的自定义解串器? - Jackson: How to use a custom deserializer with @JsonAnySetter annotation? 如何在自定义解串器中使用 jackson ObjectMapper? - How use jackson ObjectMapper inside custom deserializer? 杰克逊反序列化没有在Custom Deserializer上调用反序列化 - Jackson Deserialization not calling deserialize on Custom Deserializer 如何使用Jackson来反序列化对象侧面的对象数组? - How to use Jackson to deserialize an array of objects in side of an object? 如何使用Jackson将JSON数组反序列化为Java对象 - How to use Jackson to deserialize a JSON Array into java objects 在Jackson中是否有一种通用的方法来反序列化单值值对象(没有自定义反序列化器) - Is there a generic way to deserialize single-valued value objects (without custom Deserializer) in Jackson 杰克逊-如何编写自定义解串器 - Jackson - how to write custom deserializer 如何在 Jackson 自定义 JSON 反序列化器中使用常规 JSON 解释 - How to use regular JSON interpretation inside of a Jackson custom JSON deserializer
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM