C++ jsoncpp 几种解析json方法
来源:互联网 发布:jenkins 源码库浏览器 编辑:程序博客网 时间:2024/06/05 18:49
最近有用到json这玩意,本来想和同事商量着用自定义格式来解析,后来想想算了,他们生成json格式比较方便,那就从了他们吧 - - ,网上找了下,发现一个tinyjson,不过是基于boost的,虽然说他本身很小,不过加上boost。。。这。。项目本身没有上,为了个这个不合算。。然后看了下jsoncpp,虽然大了点,不过还好,就拿来用。
其实解析json字符串,用他的几个东西就足够
Json::Value 表示一个json值对象,后面会频繁用到
Json::Reader read对象,用来解析josn字符串,有reader就有writer -- Json::Writer
假设有这么个json字符串,这里主要讲一下带数组这种的串,象最简单的{"key":"value"}就不讲了 - -
string strJson = "{\"key1\":\"value1\",\"array\":[{\"key2\":\"value2\",\"key3\":\"aa\"},{\"key2\":\"value3\",\"key3\":\"bb\"},{\"key2\":\"value4\",\"key3\":\"cc\"}]}";
一种方法:
Json::Reader reader;
Json::Value val;
if(!reader.parse(strJson,val))
return -1;
std::string str = val["key1"].asString();
Json::Value obj_array = val["array"];
for (int i = 0; i< obj_array.size(); i++)
{
str = obj_array[i]["key2"].asString();
str = obj_array[i]["key3"].asString();
}
一次for循环就全部解析出来了
另一种,用他内建的迭代器,其实也就是他自己的一个vector<string>成员,可以自己去看json:value的定义
Json::Value::Members member;//Members 这玩意就是vector<string>,typedef了而已
for (Json::Value::iterator itr = obj_array.begin(); itr != obj_array.end(); itr++)
{
member = (*itr).getMemberNames();
for (Json::Value::Members::iterator iter = member.begin(); iter != member.end(); iter++)
{
string str_temp = (*itr)[(*iter)].asString();
}
}
其实这种方法和上面那个是一样的,只不过是写法不一样罢了,自己看你就会发现,上面一种,不过就是取了vector的size,然后直接取值.
第一次写博,也不晓得写啥,这东西写着也算给是笔记吧,省的以后忘记了。
PS:jsoncpp 开源,跨平台的。
- C++ jsoncpp 几种解析json方法
- Json解析(C++)——jsoncpp
- C++/MFC使用JSONCPP解析JSON字符串
- 用库 jsoncpp 解析 JSON
- jsoncpp 解析 JSON
- C++解析JSON(jsonCpp)
- jsoncpp解析 json对象
- 使用jsoncpp解析json
- jsoncpp 解析json
- 【C++】JSON数据解析——jsoncpp的使用
- 【C++】JSON数据解析——jsoncpp的使用
- 【C++】JSON数据解析——jsoncpp的使用
- C#解析JSON的几种方法
- Json的几种解析方法
- json解析的几种方法总结
- IOS-Json解析的几种方法
- JSON的几种解析方法
- JSON的几种解析方法
- CSS控制换行与不换行
- Python 开发者应该知道的 7 个开发库
- 给我的穿衣建议
- win 7 分区工具
- ubuntu下python安装setuptools工具
- C++ jsoncpp 几种解析json方法
- 认识java的Class类
- HashMap和HashTable
- 蓝牙串口影响matlab创建串口对象
- linux 一些常用的基本命令
- 两个已排序的List<Integer>求其交集
- JSON-lib框架,转换JSON、XML不再困难
- Java控制从键盘输入数据
- 简单字典树