没有过多解释,贴上部分代码,自行参悟
两层嵌套
#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);
}