gpt4 book ai didi

java - 自定义 Jackson 解串器获取当前字段类的访问权限

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:28:35 24 4
gpt4 key购买 nike

我正在尝试为 Jackson 编写一个自定义反序列化器,我想让它成为通用的(在处理任何类型的意义上是通用的,而不是“泛型”)。

但是我似乎无法弄清楚如何获得反序列化字段类型的句柄。

例如,我希望执行以下操作:

@Override
public MyObject deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {

Class c = <get type of current field>
// do something with that type
return new SubclassOfC(somedata based on c);
}

特别是 获取当前字段的类型 这部分我一直在努力解决。

编辑:是我感兴趣的java字段的类型。

最佳答案

你不需要——反序列化​​器是按类型注册的,所以你需要构造反序列化器来知道它期望反序列化什么类型。

如果您确实想注册一个通用反序列化器,您可以通过实现 ContextualDeserializer 使事情变得更加动态。它的 createContextual() 方法是用 BeanProperty 参数调用的,您可以检查属性名称之类的东西(如果根值未被引用,它可能为 null通过属性)和类型(这是声明的类型)。此方法然后可以返回一个新实例(不要修改原始反序列化器,因为它由所有属性共享),配置有您需要的所有额外信息。

关于java - 自定义 Jackson 解串器获取当前字段类的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8944086/

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