JsonCpp的小数精度问题和插入输出顺序问题
直接说吧,这两个问题无法解决,如下:
- 官方不支持指定小数位数,double默认位宽为17位,如:"value" : 7.0999999999999996,
- 官方不支持按插入顺序输出,而是按照key的字母排序输出的,不管你什么顺序插入,下面的都是这样的顺序输出的:
"avg_abcdd " : 1.1632640000000014, "avg_pxczzczxczxd " : 7.0999999999999996, "avg_shczxcdize " : 802000.0, "deviccxz " : "shebei25", "sh323423fd " : 1420, "vcxzcasdasdadczco " : 231
- 这里有一篇参考文章:http://velep.com/archives/1444.htm ,文中相应地给出了解决办法
个人应急想法
- 数字精度问题,可以考虑在C++中转为自己需求的精度,然后再当作字符串放到json中,至于之后的解析,读字符串再转数字即可;
- 顺序问题,两个想法:
1)不要用key,采用append的形式,也就是将每个条目放在一个容器中
Json::Value res;
std::string = entry_str;
entry_str.append("zhangsan,123");
entry_str.append("abc,2596");
.......
res["entry"] = entry_str;
2)那就按名字命令咯,顺应规则,2333333