C++使用jsoncpp解析json的方法示例分享!

前言:

曾经一段时间XML成为互联网业界内的数据传输格式标准,但有人对XML提出了质疑,认为XML数据格式比较繁杂,冗长等,于是提出了一种新的表示格式—JSON。

对于JSON格式,在此就不作详细的说明了,下面主要讨论下C++解析json文件的工具—Jsoncpp的使用。

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录。
Jsoncpp是个跨平台的开源库,下载地址:https://sourceforge.net/projects/jsoncpp/。

解压:tar -zvxf jsoncpp-src-0.5.0.tar.gz

进入到jsoncpp解压目录下,执行命令:

  sudo scons platform=linux-gcc

将/jsoncpp-src-0.5.0/include/目录下的json文件夹拷贝到 /usr/local/include/

将jsoncpp-src-0.5.0/libs/linux-gcc-4.9.1/目录下的libjson_linux-gcc-4.9.1_libmt.a 拷贝到 /usr/local/lib/ 下,并为了方便使用,将其重命名为libjson.a

Jsoncpp使用说明:

下面通过一个简单的case说明jsoncpp里主要的接口函数,通过这些基本的函数便可以完成的Json文件的解析和处理。

jsoncpp中主要的类:

json示例:

  [   { "name": "json",    "lines":      [      { "line": "1" },      { "line": "2" },      { "cpp": "jsoncpp" },      { "java": "jsoninjava" },      { "php": "support" }     ]   },   { "name": "c++",    "lines":      [      { "line": "3" },      { "line": "4" },      { "cpp": "jsoncpp" },      { "java": "jsoninjava" },      { "php": "nosupport" }     ]   }  ]  

C++代码:

  #include <iostream>  #include <fstream>  #include <string>  #include "../src/json/json.h"     using namespace std;  using namespace Json;  void main()  {    fstream ofile("json.json");    string strjson;    if (!ofile.is_open()) {      return;    }       string strline;    while (getline(ofile, strline)) {     strjson += strline;    }        ofile.close();        Json::Reader reader;  // 读取器    Json::Value root;    // Value的值值可以是任一对象        if (reader.parse(strjson, root)) {          int size = root.size();   // 根结点个数          for (int j = 0; j < size; j++) {                cout << root[j]["name"].asString() << endl;           const Json::Value arrayObj = root[j]["lines"];           for (int i = 0; i < arrayObj.size(); i++) {             if (arrayObj[i].isMember("line")) {            cout << arrayObj[i]["line"].asString() << endl;          }          if (arrayObj[i].isMember("cpp")) {            cout << arrayObj[i]["cpp"].asString() << endl;          }          if (arrayObj[i].isMember("java")) {            cout << arrayObj[i]["java"].asString() << endl;          }                int m = 0;        }      }    }     }

 到此这篇关于C++使用jsoncpp解析json的方法示例的文章就介绍到这了,更多相关C++ jsoncpp解析json内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

—-想了解C++使用jsoncpp解析json的方法示例分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/483927.html

(0)
上一篇 2020年11月10日
下一篇 2020年11月10日

精彩推荐