JsonCpp的小数精度问题和插入输出顺序问题

JsonCpp的小数精度问题和插入输出顺序问题

直接说吧,这两个问题无法解决,如下:

  1. 官方不支持指定小数位数,double默认位宽为17位,如:"value" : 7.0999999999999996,
  2. 官方不支持按插入顺序输出,而是按照key的字母排序输出的,不管你什么顺序插入,下面的都是这样的顺序输出的:
    "avg_abcdd              " : 1.1632640000000014,
    "avg_pxczzczxczxd       " : 7.0999999999999996,
    "avg_shczxcdize         " : 802000.0,
    "deviccxz               " : "shebei25",
    "sh323423fd             " : 1420,
    "vcxzcasdasdadczco      " : 231

     

  3. 这里有一篇参考文章:http://velep.com/archives/1444.htm ,文中相应地给出了解决办法 

个人应急想法 

  1. 数字精度问题,可以考虑在C++中转为自己需求的精度,然后再当作字符串放到json中,至于之后的解析,读字符串再转数字即可;
  2. 顺序问题,两个想法:

              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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值