栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java如何在Jackson的自定义解串器中调用默认解串器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java如何在Jackson的自定义解串器中调用默认解串器

正如StaxMan已经建议的那样,你可以通过编写a

BeanDeserializerModifier
并通过进行注册来实现
SimpleModule
。下面的示例应该起作用:

public class UserEventDeserializer extends StdDeserializer<User> implements ResolvableDeserializer{  private static final long serialVersionUID = 7923585097068641765L;  private final JsonDeserializer<?> defaultDeserializer;  public UserEventDeserializer(JsonDeserializer<?> defaultDeserializer)  {    super(User.class);    this.defaultDeserializer = defaultDeserializer;  }  @Override public User deserialize(JsonParser jp, DeserializationContext ctxt)      throws IOException, JsonProcessingException  {    User deserializedUser = (User) defaultDeserializer.deserialize(jp, ctxt);    // Special logic    return deserializedUser;  }  // for some reason you have to implement ResolvableDeserializer when modifying BeanDeserializer  // otherwise deserializing throws JsonMappingException??  @Override public void resolve(DeserializationContext ctxt) throws JsonMappingException  {    ((ResolvableDeserializer) defaultDeserializer).resolve(ctxt);  }  public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException  {    SimpleModule module = new SimpleModule();    module.setDeserializerModifier(new BeanDeserializerModifier()    {      @Override public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc, JsonDeserializer<?> deserializer)      {        if (beanDesc.getBeanClass() == User.class)          return new UserEventDeserializer(deserializer);        return deserializer;      }    });    ObjectMapper mapper = new ObjectMapper();    mapper.registerModule(module);    User user = mapper.readValue(new File("test.json"), User.class);  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号