前言
标注数据导出文件是json格式的,也就是python的dict格式,需要读取标注结果,可以使用c++或者python,本文使用c++实现的。
JsonCpp简介
JsonCpp是一种轻量级的数据交换格式,是个跨平台的开源库,可以从github和sourceforge上下载源码。查找资料的过程中发现另一个开源库RapidJson,有时间可以了解一下。
JsonCpp使用
1.安装JsonCpp开源库;
$ sudo apt-get install libjsoncpp-dev
2.根据json文件编辑测试程序读取json数据;
/read_json$ ls eye_state_20181102_20181106_095415.json read_json.cpp
3.编译调试测试程序;
/read_json$ g++ -o read_json read_json.cpp -ljsoncpp /read_json$ ./read_json
测试程序
/* * AMY * read_json.cpp * Date: 20181106 */ #include <iostream> #include <fstream> #include <jsoncpp/json/json.h> int main() { Json::Reader reader; Json::Value root; std::ifstream ifs; ifs.open("eye_state_20181102_20181106_095415.json", std::ios::binary); std::string line; while(std::getline(ifs, line)) { if(!reader.parse(line, root)) return -1; std::string url_image = root["url_image"].asString(); std::cout << "root.size(): " << root.size() << std::endl; std::size_t pos = url_image.find("/zrj_close"); std::string image_name = url_image.substr(pos); std::cout << "image_name: " << image_name << std::endl; std::cout << "data: " << std::endl; for(int i=0; i<root["result"].size(); i++) { Json::Value data = root["result"][i]["data"]; std::cout << "val: " << std::endl; for(int j=0; j<data.size(); j++) { int val = data[j].asInt(); std::cout << val << "---" ; } std::cout << "\n"; } line.clear(); } ifs.close(); return 0; }