先简述一下,后面详细更新:
在写数据时,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下载