1. 程式人生 > 實用技巧 >c++ jsoncpp 解析json

c++ jsoncpp 解析json

jsoncpp 解析json

1、下載 : git clonehttps://github.com/open-source-parsers/jsoncpp.git

2、cmake 編譯 、 vs開啟生成。

3、程式碼示例

#include <iostream>
#include <string>
#include <json/json.h>
#include <fstream> 

using namespace std;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ReadJsonFromFile(const char* filename)
{
    Json::Reader reader;
// 解析json用Json::Reader Json::Value root; // Json::Value是一種很重要的型別,可以代表任意型別。如int, string, object, array std::ifstream is; is.open(filename, std::ios::binary); ofstream outfile; outfile.open("./111.txt"); if (reader.parse(is, root, false)) { if (root["Registration
"].isArray()) { int fsize = root["Registration"].size(); // 得到"files"的陣列個數 for (int i = 0; i < fsize; ++i) // 遍歷陣列 { Json::Value val_position = root["Registration"][i]["position"]; int val_position_size = val_position.size();
if (val_position_size == 3) { float x = val_position[0].asFloat(); float y = val_position[1].asFloat(); float z = val_position[2].asFloat(); outfile << x << " "<< y << " " << z << std::endl; } Json::Value val_eulerangle = root["Registration"][i]["eulerangle"]; int val_eulerangle_size = val_eulerangle.size(); if (val_eulerangle_size == 3) { float x = val_eulerangle[0].asFloat(); float y = val_eulerangle[1].asFloat(); float z = val_eulerangle[2].asFloat(); outfile << x << " " << y << " " << z << " "<< 0.0 << std::endl; } } } } is.close(); outfile.close(); return 0; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int main() { ReadJsonFromFile("./panorama.json"); return 0; }