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 ,文中相应地给出了解决办法JsonCpp的小数精度问题和插入输出顺序问题_第1张图片 

个人应急想法 

  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

你可能感兴趣的:(C/C++)