[转载]jsoncpp 几种解析json方法

nhfz886
2013-10-09 · TA获得超过3936个赞
知道小有建树答主
回答量:1004
采纳率:0%
帮助的人:2345万
展开全部
,网上找了下,发现一个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++){stringstr_temp = (*itr)[(*iter)].asString();}} 其实这种方法和上面那个是一样的,只不过是写法不一样罢了,自己看你就会发现,上面一种,不过就是取了vector的size,然后直接取值. 第一次写博,也不晓得写啥,这东西写着也算给是笔记吧,省的以后忘记了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式