rapidjson解析与构造实例
2021-02-05 00:16
标签:als art oct tin eve 构造 project %s CLion document.json ninstr.json rapidjson解析与构造实例 标签:als art oct tin eve 构造 project %s CLion 原文地址:https://www.cnblogs.com/lx17746071609/p/11447998.html
void rapidjson1(){
rapidjson::StringBuffer s;
rapidjson::Writer<:stringbuffer> writer(s);
writer.StartObject(); // Between StartObject()/EndObject(),
writer.Key("hello"); // output a key,
writer.String("world"); // follow by a value.
writer.Key("t");
writer.Bool(true);
writer.Key("f");
writer.Bool(false);
writer.Key("n");
writer.Null();
writer.Key("i");
writer.Uint(123);
writer.Key("pi");
writer.Double(3.1416);
writer.Key("a");
writer.StartArray(); // Between StartArray()/EndArray(),
for (unsigned i = 0; i 4; i++)
writer.Uint(i); // all values are elements of the array.
writer.EndArray();
writer.EndObject();
// {"hello":"world","t":true,"f":false,"n":null,"i":123,"pi":3.1416,"a":[0,1,2,3]}
std::cout std::endl;
}{
"name": "xiaoming",
"gender": "boy",
"hobby": [
"足球",
"篮球",
"电影"
],
"score": {
"数学": 91.5,
"语文": 95.5,
"英语": 96
},
"lover": {
"name": "xiaohong",
"gender": "girl",
"hobby": [
"画画",
"跳舞",
"唱歌"
],
"score": {
"数学": 78.5,
"语文": 89,
"英语": 90
}
}
}
void rapidjson2(){
std::ifstream t("/home/leoxae/document1.json");
// std::ifstream t("/home/leoxae/CLionProjects/KeekoAIRobot/data/ninstructionRecognition/bcb2_feature.json");
std::string str((std::istreambuf_iteratorchar>(t)),
std::istreambuf_iteratorchar>());
rapidjson::Document document;
document.Parse(str.c_str());
rapidjson::Value::ConstMemberIterator iter = document.FindMember("name");
if(iter != document.MemberEnd()){
cout "name : " value.GetString() endl;
}
iter = document.FindMember("gender");
if(iter != document.MemberEnd()){
cout "gender : " value.GetString() endl;
}
if(document.HasMember("hobby")){
cout "hobby : " endl;
const rapidjson::Value& childValue = document["hobby"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
if(document.HasMember("score")){
cout "score : " endl;
const rapidjson::Value& childIter = document["score"];
for(rapidjson::Value::ConstMemberIterator it = childIter.MemberBegin(); it != childIter.MemberEnd(); ++it){
cout " " name.GetString() " : " value.GetDouble() endl;
}
}
if(document.HasMember("lover")){
cout "lover : " endl;
const rapidjson::Value& chileValue = document["lover"];
rapidjson::Value::ConstMemberIterator chileIter = chileValue.FindMember("name");
if(chileIter != chileValue.MemberEnd()){
cout " " "name : " value.GetString() endl;
}
chileIter = chileValue.FindMember("gender");
if(chileIter != chileValue.MemberEnd()){
cout " " "gender : " value.GetString() endl;
}
if(chileValue.HasMember("hobby")){
cout " " "hobby : " endl;
const rapidjson::Value& chile2Value = chileValue["hobby"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
if(chileValue.HasMember("score")){
cout " " "score : " endl;
const rapidjson::Value& child2Iter = chileValue["score"];
for(rapidjson::Value::ConstMemberIterator it = child2Iter.MemberBegin(); it != child2Iter.MemberEnd(); ++it){
cout " " name.GetString() " : " value.GetDouble() endl;
}
}
}
}
{"\u6269\u5c551": [0, 592],
"\u6269\u5c552": [592, 1232],
"\u6269\u5c553": [1232, 2073],
"\u6269\u5c554": [2073, 2874],
"\u6269\u5c555": [2874, 3786],
"\u6269\u5c556": [3786, 4683],
"\u6269\u5c557": [4683, 5267],
"\u6269\u5c558": [5267, 6151],
"\u6269\u5c559": [6151, 6895],
"\u6269\u5c5510": [6895, 7694],
"\u5730\u57ab\u524d\u8fdb": [7694, 8790],
"\u5730\u57ab\u5de6\u8f6c": [8790, 10237],
"\u5730\u57ab\u53f3\u8f6c": [10237, 11617],
"P1": [11617, 12809], "P2": [12809, 13680],
"\u5f00\u59cb": [13680, 15049],
"\u7ed3\u675f": [15049, 16417],
"\u5730\u57ab\u524d\u8fdb\u5c0f": [16417, 17113],
"\u5730\u57ab\u5de6\u8f6c\u5c0f": [17113, 18433],
"\u5730\u57ab\u53f3\u8f6c\u5c0f": [18433, 19954],
"\u5f00\u59cb\u5c0f": [19954, 21242],
"\u7ed3\u675f\u5c0f": [21242, 22571],
"\u6682\u505c": [22571, 23785]}
void rapidjson3(){
// std::ifstream t("/home/leoxae/document.json");
// std::ifstream t("/home/leoxae/CLionProjects/KeekoAIRobot/data/ninstructionRecognition/bcb2_feature.json");
std::ifstream t("/home/leoxae/ninstr.json");
std::string str((std::istreambuf_iteratorchar>(t)),
std::istreambuf_iteratorchar>());
rapidjson::Document document;
document.Parse(str.c_str());
//扩展1
if(document.HasMember("扩展1")){
cout "扩展1 : " endl;
const rapidjson::Value& childValue = document["扩展1"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//扩展2
if(document.HasMember("扩展2")){
cout "扩展2 : " endl;
const rapidjson::Value& childValue = document["扩展2"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//扩展3
if(document.HasMember("扩展3")){
cout "扩展3 : " endl;
const rapidjson::Value& childValue = document["扩展3"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//扩展4
if(document.HasMember("扩展4")){
cout "扩展4 : " endl;
const rapidjson::Value& childValue = document["扩展4"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//扩展5
if(document.HasMember("扩展5")){
cout "扩展5 : " endl;
const rapidjson::Value& childValue = document["扩展5"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//扩展6
if(document.HasMember("扩展6")){
cout "扩展6 : " endl;
const rapidjson::Value& childValue = document["扩展6"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//扩展7
if(document.HasMember("扩展7")){
cout "扩展7 : " endl;
const rapidjson::Value& childValue = document["扩展7"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//扩展8
if(document.HasMember("扩展8")){
cout "扩展8 : " endl;
const rapidjson::Value& childValue = document["扩展8"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//扩展9
if(document.HasMember("扩展9")){
cout "扩展9 : " endl;
const rapidjson::Value& childValue = document["扩展9"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//扩展10
if(document.HasMember("扩展10")){
cout "扩展10 : " endl;
const rapidjson::Value& childValue = document["扩展10"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//地垫前进
if(document.HasMember("地垫前进")){
cout "地垫前进 : " endl;
const rapidjson::Value& childValue = document["地垫前进"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//地垫左转
if(document.HasMember("地垫左转")){
cout "地垫左转 : " endl;
const rapidjson::Value& childValue = document["地垫左转"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//地垫右转
if(document.HasMember("地垫右转")){
cout "地垫右转 : " endl;
const rapidjson::Value& childValue = document["地垫右转"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//P1
if(document.HasMember("P1")){
cout "P1 : " endl;
const rapidjson::Value& childValue = document["P1"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//P2
if(document.HasMember("P2")){
cout "P2 : " endl;
const rapidjson::Value& childValue = document["P2"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//开始
if(document.HasMember("开始")){
cout "开始 : " endl;
const rapidjson::Value& childValue = document["开始"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//结束
if(document.HasMember("结束")){
cout "结束 : " endl;
const rapidjson::Value& childValue = document["结束"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//地垫前进小
if(document.HasMember("地垫前进小")){
cout "地垫前进小 : " endl;
const rapidjson::Value& childValue = document["地垫前进小"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//地垫左转小
if(document.HasMember("地垫左转小")){
cout "地垫左转小 : " endl;
const rapidjson::Value& childValue = document["地垫左转小"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//地垫右转小
if(document.HasMember("地垫右转小")){
cout "地垫右转小 : " endl;
const rapidjson::Value& childValue = document["地垫右转小"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//开始小
if(document.HasMember("开始小")){
cout "开始小 : " endl;
const rapidjson::Value& childValue = document["开始小"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//结束小
if(document.HasMember("结束小")){
cout "结束小 : " endl;
const rapidjson::Value& childValue = document["结束小"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
//暂停
if(document.HasMember("暂停")){
cout "暂停 : " endl;
const rapidjson::Value& childValue = document["暂停"];
for(rapidjson::SizeType i = 0; i i){
cout " " endl;
}
}
}
void readrapidjson(){
string strJsonTest = "{\"item_1\":\"value_1\",\"item_2\":\"value_2\",\"item_3\":\"value_3\",\"item_4\":\"value_4\",\"item_arr\":[\"arr_vaule_1\",\"arr_vaule_2\"]}";
rapidjson::Document docTest;
docTest.Parse0>(strJsonTest.c_str());
if (!docTest.HasParseError())
{
for (rapidjson::Value::ConstMemberIterator itr = docTest.MemberBegin(); itr != docTest.MemberEnd(); itr++)
{
rapidjson::Value jKey;
rapidjson::Value jValue;
rapidjson::Document::AllocatorType allocator;
jKey.CopyFrom(itr->name, allocator);
jValue.CopyFrom(itr->value,allocator);
if (jKey.IsString())
{
string name = jKey.GetString();
// printf("\r\nname: %s\r\n",name.c_str());
cout "name=>>:" endl;
}
}
}
}