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

时间:2018-03-21 11:51:25

标签: java jackson deserialization json-deserialization

我编写了一个自定义反序列化器,它将获取字符串并对其进行反序列化      public static class 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
          }

这可以一次序列化一个对象,我想创建一个对象列表

尝试了这个

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

这不起作用,不会抛出任何错误,只是在反序列化时卡住了 我们是否需要为每个对象拆分json数组并调用反序列化器,或修改自定义反序列化器以创建对象列表

1 个答案:

答案 0 :(得分:0)

嗯,我不明白为什么需要自定义反序列化器。

恕我直言,你可以这么做:

esi