zoukankan      html  css  js  c++  java
  • MongoDB中对象反序列化的一个小问题

    今天在mongoDB存取对象数据的时候,碰到一个小问题:对象的某一个字段类型是抽象类或者接口。在存入的时候没有问题。可是在读取的时候,因为没有详细类的信息,无法完毕对象的又一次构建。就会报错:

    Can not construct instance of com.bp.samples.json.generics.xxx, 
    problem: abstract types either need to be mapped to concrete types, have custom 
    deserializer, or be instantiated with additional type information
    at [Source:xxxxx]
    搜索了一下。有一种方法是给父类加注解。标明继承该父类的全部详细类的名字,网址:
    http://blog.csdn.net/java_huashan/article/details/46428971

    可是这样的方法由一个局限性,假设我的详细子类是可拓展的,那么每次都要改动源码上面的注解。假设是父类是在框架里,在jar包中,可能就不妥了。

    经人指点,找到还有一种比較好的方法,就是在http://wiki.fasterxml.com/JacksonPolymorphicDeserialization中提到的enableDefaultTyping一部分,在mongoDBclient初始化的时候objectMapper对象调用这种方法就能够做到又一次构建抽象类声明的成员变量。

    像这样:mapper = new ObjectMapper();
    mapper.enableDefaultTyping();


  • 相关阅读:
    熔断降级(Polly)
    网站被黑
    Redis 缓存穿透
    搭建私有Nuget仓库
    什么是配置
    css3的@media媒体查询
    css设置background图片的位置实现居中
    UTF-8有签名和无签名的区别
    SQL Server表结构和数据导入到MySQL
    Jquery实现滚动到底部加载更多(最原始)
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5248101.html
Copyright © 2011-2022 走看看