您的位置:首页 > Web前端 > JavaScript

json解析入门(jsoncpp库)

2016-04-21 15:38 369 查看
在使用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 24

HaKing is coder
*/


以上就是json文件的简单解析示例了,如果不想编译jsoncpp库,那么你只需要将jsoncpp的源代码拷贝到你的工程中,就可以使用jsoncpp库解析json文件了,为了读者方便,下面提供jsoncpp的源代码:http://download.csdn.net/detail/mitu405687908/9498176
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: