描述
使用C++语言及腾讯开发的rapidjson库,生成json字符串
代码
形式一
生成的json字符串为
{
"full":0,
"positon":[1,2],
"theta":3.14
}
rapidjson::Document jsonDoc; //生成一个dom元素Document
rapidjson::Document::AllocatorType &allocator = jsonDoc.GetAllocator(); //获取分配器
jsonDoc.SetObject();
jsonDoc.AddMember("full", 0, allocator);
rapidjson::Value letterArray(rapidjson::kArrayType);//创建一个Array类型的元素
letterArray.PushBack(1, allocator);
letterArray.PushBack(2, allocator);
jsonDoc.AddMember("position", letterArray, allocator);
jsonDoc.AddMember("theta", 3.14, allocator);
rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
jsonDoc.Accept(writer);
std::string command_string = buffer.GetString();
形式二
生成的json字符串为
{
"store":
[
{
"grid_corners":[0,1],
"status":0
},
{
"grid_corners":[1,2],
"status":0
},
{
"grid_corners":[1,2],
"status":0
},
{
"grid_corners":[2,3],
"status":1
}
]
}
rapidjson::Document jsonDoc; //生成一个dom元素Document
rapidjson::Document::AllocatorType &allocator = jsonDoc.GetAllocator(); //获取分配器
jsonDoc.SetObject();
rapidjson::Value storeArray(rapidjson::kArrayType);
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
rapidjson::Value everyGrid(rapidjson::kObjectType);
everyGrid.SetObject();
rapidjson::Value pixelArray(rapidjson::kArrayType);
pixelArray.PushBack(i+j, allocator);
pixelArray.PushBack(i+j+1, allocator);
everyGrid.AddMember("grid_corners", pixelArray, allocator);
everyGrid.AddMember("status", i*j, allocator);
storeArray.PushBack(everyGrid, allocator);
}
}
jsonDoc.AddMember("store", storeArray, allocator);
rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
jsonDoc.Accept(writer);
std::string command_string = buffer.GetString();
std::cout<<command_string<<std::endl;
形式三
生成的json字符串为
{"store":[[0,1],[1,2],[1,2],[2,3]]}
rapidjson::Document jsonDoc; //生成一个dom元素Document
rapidjson::Document::AllocatorType &allocator = jsonDoc.GetAllocator(); //获取分配器
jsonDoc.SetObject();
rapidjson::Value storeArray(rapidjson::kArrayType);
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
rapidjson::Value pixelArray(rapidjson::kArrayType);
pixelArray.PushBack(i+j, allocator);
pixelArray.PushBack(i+j+1, allocator);
storeArray.PushBack(pixelArray, allocator);
}
}
jsonDoc.AddMember("store", storeArray, allocator);
rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
jsonDoc.Accept(writer);
std::string command_string = buffer.GetString();
std::cout<<command_string<<std::endl;