Double类型输出Json反序列化入库Mongodb变字符串问题解决

场景

预处理音频数据,生成音频描述文件,文件中含有音频分段信息,需要支持小数,把分段信息写入manifest文本文件中去,当我们创建数据处理任务批次的时候,我们会解析manifest文件中的信息,原封不动的写入到mongodb中去,前端在加载的时候从mongo中拉取基础信息

问题

前端拉取的音频分段为字符串类型,这里不符合我们的预期

定位

生成的mainfest的jsonline是没有双引号的,在预处理的环节应当是没有任何问题的,由于问题很大可能出现在创建批次,加上批次创建是通用功能,无法直接用pojo类直接转换初始结果,这里统一使用JSONObject来识别,存入mongoDb也是直接存入JsonObject的,这里考虑fastjson在反序列化jsonline的时候出的问题,调试一下代码,发现fastJson在反序列化的时候,数字变成了BigDecimal类型

解决

int disableDecimalFeature = JSON.DEFAULT_PARSER_FEATURE & ~Feature.UseBigDecimal.getMask();

JSON.parseObject(content, ManifestFile.class, disableDecimalFeature);

参考链接:

记录一次alibaba.fastjson,Double类型被转换为BigDecimal类型解决方法:https://blog.csdn.net/Jeremykim1026/article/details/102784658

posted @ 2021-06-30 13:52  蒲公英的狂想  阅读(539)  评论(0编辑  收藏  举报