首页 > 其他分享 >RapidJSON 的坑--允许Object对象存在相同的key,且key为数字时序列化报异常

RapidJSON 的坑--允许Object对象存在相同的key,且key为数字时序列化报异常

时间:2024-09-10 15:24:14浏览次数:12  
标签:GetString -- doc key printf 序列化 12345 rapidjson

RapidJSON 的坑--允许Object对象存在相同的key,且key为数字时序列化报异常

测试代码如下:

 1 void show(rapidjson::Document& doc)
 2 {
 3     printf("----------------- for iterator\nMemberCount:%d\n", doc.MemberCount());
 4     for(auto it=doc.MemberBegin();it!=doc.MemberEnd();it++)
 5     {
 6       if (it->name.IsString())
 7         printf("\"%s\":\"%s\"\n",it->name.GetString(), it->value.GetString());
 8       else
 9         printf("%d:\"%s\"\n",it->name.GetInt(), it->value.GetString());
10     }
11     printf("----------------- for iterator end\n");
12 }
13 
14 void testJson(){
15     rapidjson::Document    doc;
16     doc.SetObject();
17     rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();
18     rapidjson::Value key, val;
19     key.SetString("12345");
20 
21     std::string aaa="aaa";
22     for(int i=0; i<10;i++)
23     {
24       std::string a=aaa+std::to_string(i);
25       val.SetString(a.data(), allocator);
26       doc.AddMember(key, val, allocator);
27       // doc["aaa"]=val; // 不能插入
28       // doc[a.data()]=val; // 不能插入
29     }
30     show(doc);
31     // std::string bbb="bbb";
32     // for(int i=0; i<10;i++)
33     // {
34     //   key.SetInt(12345+i); // 数值的key 在输出 json-str的时候会报异常
35     //   val.SetString((bbb+std::to_string(i)).data(), allocator);
36     //   doc.AddMember(key, val, allocator);
37     // }
38     // show(doc);
39     //
40     rapidjson::StringBuffer jsonBuffer;
41     rapidjson::Writer<rapidjson::StringBuffer> writer(jsonBuffer);
42     doc.Accept(writer);
43     std::string outJson = jsonBuffer.GetString();
44     printf("json str:%s\n",outJson.data());
45     //
46     doc.Clear();
47     doc.Parse(outJson.data());
48     printf("----------------- Parse\nMemberCount:%d\n", doc.MemberCount());
49     printf("doc['12345']=%s\n",doc["12345"].GetString());
50     printf("doc[12345]=%s\n",doc[12345].GetString());
51     show(doc);
52   printf("end");
53 }

 

标签:GetString,--,doc,key,printf,序列化,12345,rapidjson
From: https://www.cnblogs.com/lzpong/p/18406468

相关文章

  • “善用九型人格:掌握不同类型的人际交往技巧”
    九型人格的不同类型2号人格—给予者:争取得到他人支持,避免被他人反对。对自己的重要性感到骄傲。“他们没有我不行”。7号人格—享乐主义者:需要保持高度的兴奋。同时参与多项活动,对很多事情都感兴趣。喜欢保持感情的高峰状态。1号人格—完美主义者:内心的正确标准变成严......
  • 车载娱乐系统Android Auto认证
    车载娱乐系统AndroidAuto认证是谷歌官方提供的一种认证机制,旨在确保车载娱乐系统与AndroidAuto应用程序接口(API)的兼容性,从而实现与Android设备的无缝连接和通信,提供稳定、安全、高性能的用户体验。AndroidAuto认证目的:1.兼容性:确保车载娱乐系统能够与AndroidAuto平台无缝集成,实......
  • Weblogic 12c 12.2.1.10SPB 补丁文件 以及补丁升级
            最近公司项目上新接手了一个weblogic12的运维项目,小版本号码为12.2.1.1.0。为了安全稳定性,决定升级最新版补丁文件。   从oracle官网下载补丁(个人账户无法查看补丁以及下载),解压文件后发现目录文件与之前的补丁文件格式不一样,是一个SPB的补丁List。结构......
  • 谷歌Android Auto认证
    谷歌AndroidAuto认证是谷歌为在汽车中运行的Android应用程序设置的一项认证程序,旨在确保这些应用程序能够与AndroidAuto平台无缝集成,提供良好的用户体验,同时保证用户在车载环境中的安全使用。 AndroidAuto简介:AndroidAuto是谷歌专门为汽车设计的车载手机互联功能,它可以将Andr......
  • 车载CarPlay认证
    车载CarPlay认证是苹果公司针对第三方车载设备推出的一种认证计划,旨在确保这些设备能够与iPhone完美兼容,并提供与原厂CarPlay设备相同的功能和用户体验。CarPlay简介:CarPlay是一种车载系统,能够将iPhone等iOS设备与车辆的仪表盘、音响、中控等设备相连,让用户在驾驶车辆时能够使用iPh......
  • SpringMVC学习笔记
    本笔记基于【尚硅谷新版SSM框架全套视频教程,Spring6+SpringBoot3最新SSM企业级开发】https://www.bilibili.com/video/BV1AP411s7D7?vd_source=a91dafe0f846ad7bd19625e392cf76d8总结资料获取网址:https://www.wolai.com/v5Kuct5ZtPeVBk4NBUGBWFSpringMVC:构建高效表述层框......
  • array数组对象以及常用方法
    数组(Array)是一种数据结构,用于存储具有相同类型的数据元素的有序集合。1.定义数组//通过字面量方式定义数组:let 数组名=[值,值,值];letnumbers=[1,2,3,4,5];//通过构造函数定义数组:let数组名=newArray(值,值,值);(newArray()是固定写法)letfr......
  • 执行Git命令,Git都干了什么?图文带你从基础到进阶了解Git都做了什么
    0.前言Git仓库中的提交记录保存的是你目录下的所有的文件快照,就像把这些文件粘贴复制了一样,但是要比粘贴复制更加优雅。Git希望提交记录尽可能保持轻量,因此在每次提交的时候,它不会盲目的去复制你的整个目录。条件允许的情况下,它会将当前版本与仓库中的上一个版本进行对比,并把所有的......
  • 企业诚信管理体系认证:赢得信任,提升市场竞争力
    在政府采购项目中,诚信管理体系认证具有重要的加分作用。政府采购往往要求企业具备良好的信誉,确保项目执行的可靠性和透明性。拥有企业诚信管理体系证书的企业,能够在招标过程中获得更多认可,并在激烈的竞争中占据有利地位。对于希望参与政府项目的企业而言,诚信管理体系认证是一张重要......
  • 计算机3级复习(第5章)
    第五章:第五章第一节:局域网标准,交互式局域网,虚拟局域网:vlan:综合布线系统:国际标准:(综合布线系统)第五章第二节:中继器:集线器:网桥:生成树:交换机第五章第三节:以太网:综合布线系统网络拓扑结构:STP,UTP:第五章第四节:建筑群子系统设计:设备间子系统:管理子......