初探JsonCpp - 编译与基本使用
2017-07-01 21:37
381 查看
JSON(JavaScript Object Notation,JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,有效地提升了网络传输效率。
本文主要介绍 JSON 第三方解析库 JsonCpp 的安装编译过程以及基本使用。
CentOS上 的编译过程如下:
1)解压缩。
2)在编译生成动态和静态库之前,我们需要安装 linux 下的自动构建工具 scons,步骤如下图。
解压缩,然后进入目录 scons-2.2.0。
3)利用自动构建工具 scons 生成所需的 libjson,操作如图。
执行完毕,会在目录 jsoncpp-src-0.5.0/libs/linux-gcc-4.4.7 下生成库文件:
然后,将动态链接库 libjson_linux-gcc-4.4.7_libmt.so 添加到搜索路径中。
至此,编译就完成了,接下来我们来看看 JsonCpp 的基本使用。
JsonCpp 主要包含三种类型的class:Value、Reader和Writer:
①Json::Value 是 JsonCpp 中最基本、最重要的类,用于表示各种类型的对象,JsonCpp 支持的对象类型可见 Json::ValueType 枚举值。
②Json::Reader 是用于读取的,说的确切点,是用于将字符串转换为 Json::Value 对象的。
③Json::Writer 类是一个纯虚类,并不能直接使用。我们一般使用 Json::Writer 的子类:Json::FastWriter、Json::StyledWriter 和 Json::StyledStreamWriter。
(2)使用示例
1)示例1:从字符串中读取JSON
代码如下:
运行结果:
2)示例2:从文件中读取JSON
待解析的文件内容如下:
代码如下:
运行结果:
3)示例3:程序生成JSON数据
代码如下:
运行结果:
参考资料:
1.【C++】JSON文件的读取和生成. https://my.oschina.net/Tsybius2014/blog/289527
2.C++ Jsoncpp源代码编译与解析Json. http://www.cnblogs.com/xudong-bupt/p/3696329.html
本文主要介绍 JSON 第三方解析库 JsonCpp 的安装编译过程以及基本使用。
编译
在 https://sourceforge.net/projects/jsoncpp/ 我们可以获取到 JsonCpp 库。CentOS上 的编译过程如下:
1)解压缩。
2)在编译生成动态和静态库之前,我们需要安装 linux 下的自动构建工具 scons,步骤如下图。
解压缩,然后进入目录 scons-2.2.0。
3)利用自动构建工具 scons 生成所需的 libjson,操作如图。
执行完毕,会在目录 jsoncpp-src-0.5.0/libs/linux-gcc-4.4.7 下生成库文件:
然后,将动态链接库 libjson_linux-gcc-4.4.7_libmt.so 添加到搜索路径中。
至此,编译就完成了,接下来我们来看看 JsonCpp 的基本使用。
基本使用
(1)JsonCpp简介JsonCpp 主要包含三种类型的class:Value、Reader和Writer:
①Json::Value 是 JsonCpp 中最基本、最重要的类,用于表示各种类型的对象,JsonCpp 支持的对象类型可见 Json::ValueType 枚举值。
②Json::Reader 是用于读取的,说的确切点,是用于将字符串转换为 Json::Value 对象的。
③Json::Writer 类是一个纯虚类,并不能直接使用。我们一般使用 Json::Writer 的子类:Json::FastWriter、Json::StyledWriter 和 Json::StyledStreamWriter。
(2)使用示例
1)示例1:从字符串中读取JSON
代码如下:
#include "json/json.h" #include <iostream> using namespace std; int main() { const char* strValue = "{\"name\":\"json\",\"gender\":\"male\",\"height\":175,\"weight\":65}"; Json::Reader reader; Json::Value value; if(reader.parse(strValue, value)) { string name = value["name"].asString(); string gender = value["gender"].asString(); int height = value["height"].asInt(); int weight = value["weight"].asInt(); cout << "name: " << name << endl; cout << "gender:" << gender << " height:" << height << "cm weight:" << weight << "kg" << endl; } return 0; }
运行结果:
2)示例2:从文件中读取JSON
待解析的文件内容如下:
{ "name": "json", "array": [ "123", "456", "789" ] }
代码如下:
#include "json/json.h" #include <iostream> #include <fstream> using namespace std; int main() { ifstream is; is.open("JsonText", ios::binary); Json::Reader reader; Json::Value value; if(reader.parse(is, value)) { if(!value["name"].isNull()) { cout << value["name"].asString() << endl; Json::Value arrayObj = value["array"]; for(int i = 0; i < arrayObj.size(); i++) { cout << arrayObj[i].asString() << endl; } } } return 0; }
运行结果:
3)示例3:程序生成JSON数据
代码如下:
#include "json/json.h" #include <iostream> #include <fstream> using namespace std; int main() { Json::Value value; Json::Value arrayObj; for(int i = 0; i < 2; i++) { arrayObj.append(i); } value["key1"] = "value1"; value["key2"] = "value2"; value["array"] = arrayObj; // 直接输出 cout << "FastWriter:" << endl; Json::FastWriter fw; cout << fw.write(value) << endl; // 缩进输出 cout << "StyledWriter:" << endl; Json::StyledWriter sw; cout << sw.write(value) << endl; // 输出到文件 ofstream os; os.open("JsonTest"); os << sw.write(value); os.close(); return 0; }
运行结果:
参考资料:
1.【C++】JSON文件的读取和生成. https://my.oschina.net/Tsybius2014/blog/289527
2.C++ Jsoncpp源代码编译与解析Json. http://www.cnblogs.com/xudong-bupt/p/3696329.html
相关文章推荐
- windows下 jsoncpp的编译和使用
- linux下jsoncpp的编译和测试使用
- 使用eclipse+cygwin来编译jsoncpp
- linux下jsoncpp的编译安装使用,centos6.5最小化安装后如何选择安装包
- linux下jsoncpp编译与使用
- linux C++程序使用jsoncpp,并编译程序
- Linux 下编译JsonCpp与使用
- jsoncpp编译成静态库使用注意事项
- linux下jsoncpp的编译安装使用
- linux下jsoncpp的编译和测试使用
- Jsoncpp的编译和使用
- linux下jsoncpp的编译安装使用
- C++ 解析Json VC6 中编译、使用jsoncpp
- linux下jsoncpp的编译安装使用
- vs2012 编译jsoncpp和使用jsoncpp lib出现的问题
- JSONCPP在VS2013的编译和使用
- vs2013 c++ 编译配置jsoncpp和使用jsoncpp解析json文件
- jsoncpp简介、下载、编译、使用
- Jsoncpp的编译和使用
- json c++ 解析库 jsoncpp 编译和使用