读取Json文件C++的代码编写小结
最近在学习通过C++工具来读取Json文件,关于C++编译器的配置方法,网上教程有很多,这里就不再叙述。下面主要总结一下Json文件编写/读取的规则及注意事项。
一、Json文件的编写规则
1.文件中的不同对象都需要用{ };
2.每个对象都需要用“ ”,相应对象的值:若是文本则用“”,若是数值则直接写;
3.若某对象下又有很多其他不同的子对象,则这些子对象需要整体用{ };
4.若某对象下有很多可选的相同名称的成员,这些成员需要用[ ],可理解为数组,事实上读取文件代码就按数组处理。
下面展示一些 内联代码片
。
{
"filename":"verify_detection_config",
"modify_data":"20200705",
"2d_detect":
{
"lib_path":"..\\..\\..\\..\\...",
"test_datas":{
"image_path":"",
"mp4_path":"D:\\00_DATASETS\\01_Video\\0060.mp4",
"txt_path":""
}
},
"freespace":
{
"lib_path":"..\\..\\..\\..\\...",
"test_datas":{
"image_path":"D:\\00_DATASETS\\02_Image\\picture.jpg",
"mp4_path":"D:\\00_DATASETS\\01_Video\\0060.mp4",
"txt_path":"..\\..\\..\\..\\XXX.txt"
}
}
}
二、Json文件读取代码的编写规则
1.索引到某对象下的子对象,可一级一级用[ ]向下查找;
2.索引到某对象下的成员,可用for循环在该对象后用[i]进行索引;
3.注意对象名要用[“ ”](带引号),索引成员只需在对象后添加[索引值]即可。
if (reader.parse(JsonFile, value)) {
if (value.isMember(data_key)) {
if (!value[data_key]["lib_path"].empty()) {
if (value[data_key]["test_datas"]["image_path"] != "") {
data_path = value[data_key]["test_datas"]["image_path"].asString();
data_type = 1; //1 表示数据类型为图片
}
else if (value[data_key]["test_datas"]["video_path"] != "") {
data_path = value[data_key]["test_datas"]["mp4_path"].asString();
data_type = 0; //0 表示数据类型为视频
}
else if (value[data_key]["test_datas"]["text_path"] != "") {
data_path = value[data_key]["test_datas"]["txt_path"].asString();
data_type = 2; //2 表示数据类型为文本
}
else return -1;
}
}
}