jsoncpp的安装与使用示例
安装:
生成静态库
- 生成静态库:
- 第一步:生成目标文件:
- g++ -g -Wall -c json_reader.cpp json_value.cpp json_writer.cpp -I. -I../../include -lpthread
- 会生成三个*.o文件
- json_reader.o
- json_value.o
- json_writer.o
- 第二步:生成静态库文件:
- ar rcs libjsoncpp.a *.o
生成动态库:
- g++ -g json_reader.cpp json_value.cpp json_writer.cpp -fPIC -Wall -shared -o libjsoncpp.so -I. -I../../include -lpthread
记得引用时:
1.指定库文件:比如将生成的 libjsoncpp.so和libjsoncpp.a库文件放到/usr/local/lib/jsoncpp-src-0.5.0/下面.
2.指定头文件位置:比如,将jsoncpp-src-0.5.0/include/下的头文件放到/usr/local/include/jsoncpp-src-0.5.0/下面.
实用示例:
- #include <iostream>
- #include <fstream>
- //#include </usr/local/include/jsoncpp0.5.0/json/json.h>
- //#include <json/json.h>
- #include <json/json.h>
- using namespace std;
- int main()
- {
- //根节点
- Json::Value root;
- //根节点属性
- root["name"] = Json::Value("Tsybius");
- root["age"] = Json::Value();
- root["sex_is_male"] = Json::Value(true);
- //子节点
- Json::Value partner;
- //子节点属性
- partner["partner_name"] = Json::Value("Galatea");
- partner["partner_age"] = Json::Value();
- partner["partner_sex_is_male"] = Json::Value(false);
- //子节点挂到根节点上
- root["partner"] = Json::Value(partner);
- //数组形式
- root["achievement"].append("ach1");
- root["achievement"].append("ach2");
- root["achievement"].append("ach3");
- //直接输出
- cout << "FastWriter:" << endl;
- Json::FastWriter fw;
- cout << fw.write(root) << endl << endl;
- //缩进输出
- cout << "StyledWriter:" << endl;
- Json::StyledWriter sw;
- cout << sw.write(root) << endl << endl;
- //输出到文件
- ofstream os;
- os.open("./PersonalInfo.js");
- os << sw.write(root);
- os.close();
- return ;
- }
output:
- FastWriter:
- {"achievement":["ach1","ach2","ach3"],"age":,"name":"Tsybius","partner":{"partner_age":,"partner_name":"Galatea","partner_sex_is_male":false},"sex_is_male":true}
- StyledWriter:
- {
- "achievement" : [ "ach1", "ach2", "ach3" ],
- "age" : ,
- "name" : "Tsybius",
- "partner" : {
- "partner_age" : ,
- "partner_name" : "Galatea",
- "partner_sex_is_male" : false
- },
- "sex_is_male" : true
- }
- #include <bits/stdc++.h>
- //#include <json/json.h>
- #include </usr/include/jsoncpp/json/json.h>
- void readJson();
- void writeJson();
- int main(int argc, char **argv)
- {
- readJson();
- writeJson();
- return ;
- }
- void readJson()
- {
- using namespace std;
- std::string strValue =
- "{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}";
- Json::Reader reader;
- Json::Value value;
- if (reader.parse(strValue, value)) {
- std::string out = value["name"].asString();
- std::cout << out << std::endl;
- const Json::Value arrayObj = value["array"];
- for (unsigned int i = ; i < arrayObj.size(); i++) {
- if (!arrayObj[i].isMember("cpp"))
- continue;
- out = arrayObj[i]["cpp"].asString();
- std::cout << out;
- if (i != (arrayObj.size() - ))
- std::cout << std::endl;
- }
- }
- }
- void writeJson()
- {
- using namespace std;
- Json::Value root;
- Json::Value arrayObj;
- Json::Value item;
- item["cpp"] = "jsoncpp";
- item["java"] = "jsoninjava";
- item["php"] = "support";
- arrayObj.append(item);
- root["name"] = "json";
- root["array"] = arrayObj;
- root.toStyledString();
- std::string out = root.toStyledString();
- std::cout << out << std::endl;
- }
- json
- jsoncpp
- {
- "array" : [
- {
- "cpp" : "jsoncpp",
- "java" : "jsoninjava",
- "php" : "support"
- }
- ],
- "name" : "json"
- }
jsoncpp的安装与使用示例的更多相关文章
- Thrift在Windows及Linux平台下的安装和使用示例
本文章也同时发表在个人博客Thrift在Windows及Linux平台下的安装和使用示例上. thrift介绍 Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的R ...
- Redis 安装与简单示例
Redis 安装与简单示例 一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或 ...
- TensorFlow入门,基本介绍,基本概念,计算图,pip安装,helloworld示例,实现简单的神经网络
TensorFlow入门,基本介绍,基本概念,计算图,pip安装,helloworld示例,实现简单的神经网络
- Linux下安装GB2312的示例
Linux下安装GB2312的示例 Step 1: 到Linux字符集的安装包目录下 [cd /usr/share/i18n/charmaps] Step 2: 解压该目录下的GB2312.gz ...
- cesium安装及第一个示例
cesium安装及第一个示例 一.环境要求 二.浏览器要求 三.安装node.js 四.下载cesium包(地址为https://cesiumjs.org) 包括了 五.在你的项目里引入相关js与cs ...
- Hadoop:pig 安装及入门示例
pig是hadoop的一个子项目,用于简化MapReduce的开发工作,可以用更人性化的脚本方式分析数据. 一.安装 a) 下载 从官网http://pig.apache.org下载最新版本(目前是0 ...
- Redis 安装与简单示例 01_转
一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或者64位.下载解压后图片如下 ...
- Redis 安装与简单示例 <第一篇>
一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或者64位.下载解压后图片如下 ...
- Redis 安装与简单示例(转)
本文转载自:http://www.cnblogs.com/kissdodog/p/3570984.html Redis的安装 Redis下载地址如下:https://github.com/dmajki ...
随机推荐
- 开源软件License汇总
用到的open source code越多,遇到的开源License协议就越多.License是软件的授权许可,里面详尽表述了你获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的 ...
- [Latex] 所有字体embedded: Type3 PDF文档处理 / True Type转换为Type 1
目录: [正文] Adobe Acrobat打印解决字体嵌入问题 [Appendix I] Type3转TRUE Type/Type 1 [Appendix II] TRUE Type转Type 1 ...
- 小学生都能写智能语音助手了,我这颗转战AI的心要何去何从?
前言——我是不是老了 前天看了一个关于AI类的综艺节目我感觉整个人都不好了.这个综艺的名字叫<智造将来>上面那个小屁孩自己写了一个智能语音助手,这个小屁孩叫袁翊闳是2018年百度AI开发者 ...
- 说说 Python 的变量以及简单数据类型
1 变量 先来看一个示例: news="我国第一个人工智能规划问世"print(news) 运行结果: 可以看出使用 Python 定义变量很简单,甚至都不需要指定变量的类型. 1 ...
- PAT甲级题解-1097. Deduplication on a Linked List (25)-链表的删除操作
给定一个链表,你需要删除那些绝对值相同的节点,对于每个绝对值K,仅保留第一个出现的节点.删除的节点会保留在另一条链表上.简单来说就是去重,去掉绝对值相同的那些.先输出删除后的链表,再输出删除了的链表. ...
- 团队作业4——WBS练习
一.作业要求 对团队项目进行任务分解 要求所有人共同参与 队长列出需求 成员进行估计 队长领导大家达成共识 形成团队报告,发至团队博客 注意:分解的粒度最小不应超过6小时(即一个人在6小时以内能够完 ...
- iOS 内存管理-copy、 retain、 assign 、readonly 、 readwrite、nonatomic、@property、@synthesize、@dynamic、IB_DESIGNABLE 、 IBInspectable、IBOutletCollection
浅谈iOS内存管理机制 alloc,retain,copy,release,autorelease 1)使用@property配合@synthesize可以让编译器自动实现getter/setter方 ...
- 单片机pc指针
单片机的PC是指程序计数器(Program Counter).程序计数器PC用于存放下一条将要执行的指令地址,是一个16位专用寄存器,不能通过MOV指令来操作,对用户来说是不可见的.当执行一条指令时, ...
- MySQL与Oracle集群主从复制工具
Oracle提供了DataGuard:MySQL提供了Group Replication,简称MGR. Oracle DataGuard的文章:http://www.cnblogs.com/adolf ...
- [转帖知乎]5G 网络和 4G 网络有什么区别?
5G 网络和 4G 网络有什么区别? 先放上一篇有史以来最强的5G科普: 一个简单且神奇的公式 今天的故事,从一个公式开始讲起. 这是一个既简单又神奇的公式.说它简单,是因为它一共只有3个字母.而说它 ...