cJSON与Jsoncpp区别

先简述一下,后面详细更新:

 

在写数据时,jsoncpp内部会按照map表的特性按照key-value进行排序,这可能会导致最终结果与想要得到的结果不一致

如下:用jsoncpp写入json时会进行内部排序:

 

            "Polygon_DARCP_List0" : "{-45.389800,-0.533400,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List1" : "{-45.389800,12.471400,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List10" : "{-73.685400,16.916400,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List11" : "{-75.844400,14.757400,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List12" : "{-75.844400,14.757400,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List13" : "{-75.844400,-2.667000,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List14" : "{-75.844400,-2.667000,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List15" : "{-74.472800,-4.038600,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List16" : "{-74.472800,-4.038600,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List17" : "{-48.920400,-4.038600,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List18" : "{-48.920400,-4.038600,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List19" : "{-45.415200,-0.533400,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List2" : "{-45.389800,12.471400,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List20" : "{-45.415200,-0.533400,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List3" : "{-48.539400,15.621000,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List4" : "{-48.539400,15.621000,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List5" : "{-57.861200,15.621000,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List6" : "{-57.861200,15.621000,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List7" : "{-59.156600,16.916400,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List8" : "{-59.156600,16.916400,0.000000,0.000000,0.000000}",
            "Polygon_DARCP_List9" : "{-73.685400,16.916400,0.000000,0.000000,0.000000}"

而我实际所想得到的结果为:


"Polygon_DARCP_List0" : "{-45.389800,-0.533400,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List1" : "{-45.389800,12.471400,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List2" : "{-45.389800,12.471400,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List3" : "{-48.539400,15.621000,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List4" : "{-48.539400,15.621000,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List5" : "{-57.861200,15.621000,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List6" : "{-57.861200,15.621000,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List7" : "{-59.156600,16.916400,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List8" : "{-59.156600,16.916400,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List9" : "{-73.685400,16.916400,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List10" : "{-73.685400,16.916400,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List11" : "{-75.844400,14.757400,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List12" : "{-75.844400,14.757400,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List13" : "{-75.844400,-2.667000,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List14" : "{-75.844400,-2.667000,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List15" : "{-74.472800,-4.038600,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List16" : "{-74.472800,-4.038600,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List17" : "{-48.920400,-4.038600,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List18" : "{-48.920400,-4.038600,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List19" : "{-45.415200,-0.533400,0.000000,0.000000,0.000000}",
"Polygon_DARCP_List20" : "{-45.415200,-0.533400,0.000000,0.000000,0.000000}",

        而cJSON则不会产生这样的问题,完全按照写入时的顺序进行结果输出,了解到cJSON采用链表存储,jsoncpp内部为map存储,结构上的差异导致最终结果不同;

        ---------------------------------------------------------------------------------20210601

关于cJSON与jsoncpp的源码在下面链接,使用起来很方便,直接加入到头文件中跟工程一起编译就行了,需要注意的是,cJSON是由C(ANSI C89)实现的,跨平台性较好,但在进行c++项目编译时注意。jsoncpp由c++实现,可以根据实际需求自行选择;

源码:简单实用的json解析工具-C++文档类资源-CSDN下载

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值