rapidjson 自己使用代码片段

rapidjson 使用


没有过多解释,贴上部分代码,自行参悟

两层嵌套

#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include "rapidjson/filewritestream.h"
#include "rapidjson/prettywriter.h"
#include "rapidjson/filereadstream.h"

int InitRemarkConfig()
{ 
    char tmp[5];
    char name[20];

    doc.SetObject();
    rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();
    for(int i = 0;i<50;i++)
    {
        strcpy(name,"value");
        sprintf(tmp, "%d", i);
        strcat(name,tmp);
        rapidjson::Value index(name,allocator);
        doc.AddMember(index, "", allocator);
    } 
    
    rapidjson::StringBuffer strBuf;
    rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(strBuf);
    doc.Accept(writer);
    
    FILE *fp = NULL;
    fp = fopen(remarkPath, "w+");
    fprintf(fp, "%s", strBuf.GetString());
    fclose(fp);
}
int InitUserInfoConfig()
{ 
    const char* kernelCommand = "uname -r";
    char kernelOutput[110];

    doc.SetObject();
    rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();
    doc.AddMember("language","ZH",allocator);
    doc.AddMember("systeminfo","Linux",allocator);
    
    FILE* pipe;
    pipe = popen(kernelCommand, "r");
    if (fgets(kernelOutput, sizeof(kernelOutput), pipe) != NULL) {
        kernelOutput[strcspn(kernelOutput, "\n")] = '\0';
    }
    
    rapidjson::Value kernelValue;
    kernelValue.SetString(kernelOutput, strlen(kernelOutput), allocator);

    doc.AddMember("kernel",kernelValue,allocator);
 
    rapidjson::StringBuffer strBuf;
    rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(strBuf);
    doc.Accept(writer);

    FILE *fp = NULL;
    fp = fopen(userinfoPath, "w+");
    fprintf(fp, "%s", strBuf.GetString());
    fclose(fp);
}

三层嵌套

#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include "rapidjson/filewritestream.h"
#include "rapidjson/prettywriter.h"
#include "rapidjson/filereadstream.h"

int InitRemarkConfig()
{ 
    char tmp[5];
    char name[20];

    doc.SetObject();
    rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();
    rapidjson::Value remark(rapidjson::Type::kObjectType);
    for(int i = 0;i<50;i++)
    {
        strcpy(name,"value");
        sprintf(tmp, "%d", i);
        strcat(name,tmp);
        rapidjson::Value index(name,allocator);
        remark.AddMember(index,"",allocator);
    }  
    doc.AddMember("remarks", remark, allocator);

    rapidjson::StringBuffer strBuf;
    rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(strBuf);
    doc.Accept(writer);

    FILE *fp = NULL;
    fp = fopen(remarkPath, "w+");
    fprintf(fp, "%s", strBuf.GetString());
    fclose(fp);
}
int InitUserInfoConfig()
{ 
    const char* kernelCommand = "uname -r";
    char kernelOutput[110];

    doc.SetObject();
    rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();
    rapidjson::Value info(rapidjson::Type::kObjectType);
    info.AddMember("language","ZH",allocator);
    info.AddMember("systeminfo","Linux",allocator);
    
    FILE* pipe;
    pipe = popen(kernelCommand, "r");
    if (fgets(kernelOutput, sizeof(kernelOutput), pipe) != NULL) {
        kernelOutput[strcspn(kernelOutput, "\n")] = '\0';
    }
    
    rapidjson::Value kernelValue;
    kernelValue.SetString(kernelOutput, strlen(kernelOutput), allocator);

    info.AddMember("kernel",kernelValue,allocator);
    doc.AddMember("deviceinfo", info, allocator);
 
    rapidjson::StringBuffer strBuf;
    rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(strBuf);
    doc.Accept(writer);

    FILE *fp = NULL;
    fp = fopen(userinfoPath, "w+");
    fprintf(fp, "%s", strBuf.GetString());
    fclose(fp);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值