gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:27 24 4
gpt4 key购买 nike

我编写了一个自定义反序列化器,它将获取字符串并将其反序列化 公共(public)静态类 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 数组并为每个对象调用反序列化器,或者修改自定义反序列化器来创建对象列表

最佳答案

嗯,我根本不明白为什么需要自定义解串器。

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

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

关于java - 当我们编写自定义反序列化器时,如何使用 Jackson 反序列化对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49405625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com