Mongo插入Json数据报错:Can't find a codec for class java.math.BigDecimal.

首先吐槽一下百度啊,百度了好久,还是找不到问题所在。幸好公司有外网,我抱着尝试的态度谷歌了一下,看了老外的博客才解决了这个问题。

需求:我希望将Json插入到MongDB。

1.方法一:我选择FastJson得到json数据,使用Document类包装,插入到mongdb中。

        //将数据转换为json类
        JSONObject jsonObject = JSONObject.parseObject(filter(json);
        //Mongo 上下文配置,我自己写的工具类,自行百度
        MongoTest mongodb = new MongoTest("mycol");
        MongoCollection<Document> collection =mongodb.getCollection("myjson");
        //包装json类
        Document document=new Document(jsonObject);
        //插入json
       insertMany(getListDocument(document), collection);

此方法会报错如下

Exception in thread "main" org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class java.math.BigDecimal.
    at org.bson.codecs.configuration.CodecCache.getOrThrow(CodecCache.java:46)

2.问题解析

查阅资料显示,我的mongodb-driver的版本为3.4.2,并不支持再BigDecimal了,最终我的解决方案为不使用Document插入数据,而是使用DBObject插入Mongo中。

3.解决方法代码

//工具类
public MongoCollection<DBObject> getDBCollection(String collectionName) throws IOException{
        return mongoDatabase.getCollection(collectionName,DBObject.class);
}
 private static void insertMongo(MongoCollection<DBObject> collection,DBObject object)
    {
        List <DBObject> list=new ArrayList<>();
        list.add(object);
        collection.insertMany(list);
    }
        //获取DBObject
        DBObject jsOB=(DBObject)com.mongodb.util.JSON.parse(filter(json));
        //Mongo 上下文配置,我自己写的工具类,自行百度
        MongoTest mongodb = new MongoTest("mycol");
        MongoCollection<Document> collection =mongodb.getDBCollection("myjson");
        //插入数据
        insertMongo(collection,dbObject);

3.总结:通过更改Document插入数据更改为DBObject插入数据,这样就可以解决问题了。大家加油!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值