前言

标注数据导出文件是json格式的,也就是python的dict格式,需要读取标注结果,可以使用c++或者python,本文使用c++实现的。

JsonCpp简介

JsonCpp是一种轻量级的数据交换格式,是个跨平台的开源库,可以从githubsourceforge上下载源码。查找资料的过程中发现另一个开源库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;
}
View Code

相关文章:

  • 2022-01-01
  • 2022-01-07
  • 2021-11-23
  • 2021-11-20
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-19
  • 2021-10-06
  • 2022-01-19
相关资源
相似解决方案