C++实现json转换,使用JsonCpp第三方库,详细说明
来源:互联网 发布:怎么抢注域名 编辑:程序博客网 时间:2024/06/05 04:55
现在json的广泛使用就不必多说了,它的重要性也是不言而喻的。对于android和ios而言json解析非常方便。C++上面相对而言麻烦一点,但是使用第三方的jsoncpp库却是非常方便的。
jsoncpp的使用网上一搜一大把,但是很多很多教程说明,按照其步骤总是或多或少有些问题,对于经验不丰富或者初次接触的人而言,每个小问题都是那样的让人沮丧。
话不多说咱们来看看详细过程。
1、工欲善其事,必先利其器,下载jsoncpp,链接:jsoncpp代码下载。(我下载的版本是jsoncpp-src-0.5.0.tar.gz)
2、下载完成后,解压jsoncpp-src-0.5.0.tar.gz你会看到很多傻傻分不清楚的文件。用visual的童鞋们直接进入jsoncpp-src-0.5.0\makefiles\vs71目录你会发现一个sln的文件。这就是所有用visual的同学的最爱啊,还由于神马?戳他。用visual08或者更高的版本吧。
3、打开工程后会发现有三个工程。oh My god!这就是晴天霹雳,尼玛三个工程几个意思?而且按个F5还报神马鬼错。。。开始崩溃了。
4、平复下心情,继续问度娘。黄天不负有心人,原来只有lib_json这个工程才是关键,其与两个就是障眼法。直接无视。
5、直接lib_json右键编译生成lib库文件。(说明下,这个玩意有个比较坑的事情是:它的debug库跟release库名字不一样,也就是说如果你的工程debug的时候要使用debug库,release的时候要使用release的库。)
6、说个注意事项吧,如果在编译release版本的库时候出现----fatal error C1083: 无法打开编译器生成的文件:“../../build/vs71/release/lib_json\***.asm”: No such file or directory。
解决方法: lib_json -> Properties -> Configuration Properties -> C/C++ -> Output Files -> Assembler Output->change it to No Listing
=======================================至此已经成功一半了==================================================
剩下的就是应用来。
1、自己建一个自己的win32工程。
2、把\jsoncpp-src-0.5.0\include\json目录下的所有头文件copy到你的工程中去。并导入。
3、在要应用的json的类中添加#include "json.h"头文件。在stdafx.h中添加
#ifdef _DEBUG
#pragma comment(lib, "json_vc71_libmtd.lib")
#else
//json_vc71_libmt.lib
#pragma comment(lib, "json_vc71_libmt.lib")
#endif
加载静态库,再次提醒,debug模式下,使用debug库,
4、前面都是准备工作,接下来就是json的字符串处理和操作了。(这段是copy网上的一个例子,只是一个参考)
从字符串解析json
// json字符串解析
{"ProInfo":[{"OID":"1","ProType":"IFH","ProName":"509","ProCode":"1"},{"OID":"2","ProType":"IHG","ProName":"1509","ProCode":"2"},{"OID":"3","ProType":"PA","ProName":"1601","ProCode":"3"}]}
Json::Reader reader;
Json::Value root;
if (reader.parse(jsonString, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{
int size = root["ProInfo"].size();
for(int i = 0 ; i < size; ++ i){
TRACE(" %s %s %s \n",root["ProInfo"][i]["ProType"].asString().c_str(),root["ProInfo"][i]["ProName"].asString().c_str(),root["ProInfo"][i]["ProCode"].asString().c_str());
}
}
- C++实现json转换,使用JsonCpp第三方库,详细说明
- c++ 第三方json解析库 jsoncpp的使用
- c++ 第三方json解析库 jsoncpp的使用
- 利用C++试用JSON第三方库JsonCpp
- 利用C++试用JSON第三方库JsonCpp
- JSON学习笔记(格式/第三方库jsonCpp与libJson的配置和使用) cocos2d-x
- JSON学习笔记(格式/第三方库jsonCpp与libJson的配置和使用) cocos2d-x
- qt解析json(使用第三方库
- C++/MFC使用JSONCPP解析JSON字符串
- SAE导入第三方模块详细说明
- 用 Rhino/Nashorn 代替第三方 JSON 转换库
- 解析JSON数据的详细步骤以及偷懒技巧(使用第三方库GSON以及GsonFormat工具)
- linux c 使用第三方库
- json解析库jsoncpp的使用
- 使用 C++ 库 jsoncpp 处理 JSON 数据
- 使用jsoncpp解析json
- 使用jsoncpp读取json
- 第三方库代码使用过程中的相关问题说明
- 机器学习算法面试—口述(2):Adaboost算法及常见问题
- Linux中exec命令
- CMT跟踪算法学习笔记(一)
- JAVA_SE系列:02.编程语言的运行机制与jdk的安装配置
- ZOJ1858 Soundex
- C++实现json转换,使用JsonCpp第三方库,详细说明
- EmguCV Image类中的函数(三)几种边缘检测算法和仿射变换
- JAVA UUID 生成
- AlarmManager关掉进程后不起作用的问题
- 剑指offer面试题24-二叉搜索树的后序遍历序列
- 一个简单的支持unicode的tstring类
- 辞职后公积金如何处理
- 设计模式: 策略模式的实现
- php利用smtp类轻松的发送电子邮件