专栏首页程序手艺人C++之rapidjson构造Json数据集合

C++之rapidjson构造Json数据集合

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/z2066411585/article/details/102769384

项目中用到rapidjson开源库,用于json数据的解析和封装. 记录下使用的一些技巧

构建数组对象

    "extra": {
        "sceneList": [
            {
                "sceneId": "aaaaaaaa",
                "sceneStatus": 0
            },
            {
                "sceneId": "aaaaaaaa",
                "sceneStatus": 1
            },
            {
                "sceneId": "aaaaaaaa",
                "sceneStatus": 2
            }
        ]
    }

代码如下:

   // 申请数组
    Value array2(kArrayType);
    for(int i=0;i<3;i++){
       // 申请对象
        Value object1(kObjectType);
        object1.AddMember("sceneId","aaaaaaaa",allocator);
        object1.AddMember("sceneStatus",i,allocator);
        array2.PushBack(object1,allocator);
    }
    //申请对象
    Value object3(kObjectType);
    //添加数组成员
    object3.AddMember("sceneList",array2,allocator);
    doc.AddMember("extra",object3,allocator);

遍历数组

        "lang_list":[
            "fr-CA",
            "ja-JP",
            "en-CA",
        ]

代码如下:

    Value &lang_list  = attachInfo["lang_list"];
    //for(SizeType i=0;i<lang_list.Size(); i++)
        //cout<<'\t'<<lang_list[i].GetString()<<endl;

    Value langList(kArrayType);
	for(SizeType i=0;i<lang_list.Size(); i++)
	{
		Value strObject(kObjectType);
		strObject.SetString(StringRef(lang_list[i].GetString()));
		langList.PushBack(strObject,allocator);
	}

参考

rapidjson库的使用

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【C++语言】 cin和cout的详解

    cin是C++编程语言中的标准输入流对象,即istream类的对象。cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘。此外,cout是流的对象...

    编程范 源代码公司
  • Vue 项目里戳中你痛点的问题及解决办法(下)

    作者:愣锤 https://juejin.im/post/5b174de8f265da6e410e0b4e

    Nealyang
  • JavaSE笔记

    (2)一个.java源文件中可以声明多个类,但是只能有一个public修饰的类,文件名要和public修饰的类名保持一致;

    阮键
  • JAVA基础复习(重点)

    (2)一个.java源文件中可以声明多个类,但是只能有一个public修饰的类,文件名要和public修饰的类名保持一致;

    阮键
  • AddressSanitizer算法及源码解析

    AddressSanitizer是Google用于检测内存各种buffer overflow(Heap buffer overflow, Stack buffe...

    Linux阅码场
  • C++11较C++03的改进

    一门语言如果太啰嗦了,不仅会为阅读带来障碍,而且还是许多错误的根源。所以从C语言继承而来的关键词auto在C++11中有了新的定义,可以进行自动类型推断。

    编程范 源代码公司
  • 学习OpenCV,新手常会问我的十个问题 | 视觉入门

    赶快去检查/配置环境变量,看看有没有把opencv_world+版本号d.dll所在路径到系统环境变量path中去,如果没有问题,重启VS即可

    磐创AI
  • Java:new一个对象的过程中发生了什么?

    java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。

    Java团长
  • Android SurfaceVeiw划矩形截屏存放到RecyclerView中

    前一篇文章《Android SurfaceView onTouchEvent进阶操作OpenCV显示》我们已经实现了在SurfaceView中划矩形显示在源图上...

    Vaccae
  • java代码查错11道题

    大侠们,这有何错误? 答案: 错。abstract method必须以分号结尾,且不带花括号。

    框架师

扫码关注云+社区

领取腾讯云代金券