json解析入门(jsoncpp库)

来源:互联网 发布:查看进程占用的端口 编辑:程序博客网 时间:2024/06/05 10:13

在使用C++开发中,很多时候都会用到配置文件,配置文件常见的有json和xml这两种文件,其中json常用的解析库有:jsoncpp和boos库,下面就简单的讲讲jsoncpp是如何解析json文件的。
json文件内容如下所示:

// josn文件内容{    "name" : "HaKing",    "age" : 24,    "array" :    [        {            "first":"HaKing"        },        {            "secend":"is"        },        {            "third":"coder"        }    ]}

现在使用jsoncpp解析上面的json文件

// 控制台输出需要包含的头文件#include <iostream>// 获取json文件中数据所需要包含的头文件#include <fstream>// 解析json需要包含的json库#include "json.h"// 使用ostringstream需要包含的头文件#include <sstream>int main(int argc, const char * argv[]){    std::ifstream ifs;    ifs.open("/Users/Fsy/Desktop/C++/Json/haking.json");    Json::Reader reader;    Json::Value root;    if (!reader.parse(ifs, root,false))    {        return -1;    }    std::ostringstream str;    // 1.直接读取值    str << root["name"].asString() << " age is " << root["age"] << std::endl;    // 2.读取数组    Json::Value arrayObj = root["array"];    for (unsigned int i = 0; i < arrayObj.size(); i++)    {        if (arrayObj[i].isMember("first"))        {            str << arrayObj[i]["first"].asString() << " ";            continue;        }        if (arrayObj[i].isMember("secend"))        {            str << arrayObj[i]["secend"].asString() << " ";            continue;        }        if (arrayObj[i].isMember("third"))        {            str << arrayObj[i]["third"].asString() << std::endl;            continue;        }    }    std::cout << str.str() << std::endl;    return 0;}// 输出/*HaKing age is 24HaKing is coder*/

以上就是json文件的简单解析示例了,如果不想编译jsoncpp库,那么你只需要将jsoncpp的源代码拷贝到你的工程中,就可以使用jsoncpp库解析json文件了,为了读者方便,下面提供jsoncpp的源代码:http://download.csdn.net/detail/mitu405687908/9498176

0 0