安装:

生成静态库

  1. 生成静态库:
  2. 第一步:生成目标文件:
  3. g++ -g -Wall -c json_reader.cpp json_value.cpp json_writer.cpp -I. -I../../include -lpthread
  4.  
  5. 会生成三个*.o文件
  6. json_reader.o
  7. json_value.o
  8. json_writer.o
  9.  
  10. 第二步:生成静态库文件:
  11. ar rcs libjsoncpp.a *.o

生成动态库:

  1. 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/下面.

实用示例:

  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. //#include </usr/local/include/jsoncpp0.5.0/json/json.h>
  5. //#include <json/json.h>
  6. #include <json/json.h>
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11. //根节点
  12. Json::Value root;
  13.  
  14. //根节点属性
  15. root["name"] = Json::Value("Tsybius");
  16. root["age"] = Json::Value();
  17. root["sex_is_male"] = Json::Value(true);
  18.  
  19. //子节点
  20. Json::Value partner;
  21.  
  22. //子节点属性
  23. partner["partner_name"] = Json::Value("Galatea");
  24. partner["partner_age"] = Json::Value();
  25. partner["partner_sex_is_male"] = Json::Value(false);
  26.  
  27. //子节点挂到根节点上
  28. root["partner"] = Json::Value(partner);
  29.  
  30. //数组形式
  31. root["achievement"].append("ach1");
  32. root["achievement"].append("ach2");
  33. root["achievement"].append("ach3");
  34.  
  35. //直接输出
  36. cout << "FastWriter:" << endl;
  37. Json::FastWriter fw;
  38. cout << fw.write(root) << endl << endl;
  39.  
  40. //缩进输出
  41. cout << "StyledWriter:" << endl;
  42. Json::StyledWriter sw;
  43. cout << sw.write(root) << endl << endl;
  44.  
  45. //输出到文件
  46. ofstream os;
  47. os.open("./PersonalInfo.js");
  48. os << sw.write(root);
  49. os.close();
  50.  
  51. return ;
  52. }

output:

  1. FastWriter:
  2. {"achievement":["ach1","ach2","ach3"],"age":,"name":"Tsybius","partner":{"partner_age":,"partner_name":"Galatea","partner_sex_is_male":false},"sex_is_male":true}
  3.  
  4. StyledWriter:
  5. {
  6. "achievement" : [ "ach1", "ach2", "ach3" ],
  7. "age" : ,
  8. "name" : "Tsybius",
  9. "partner" : {
  10. "partner_age" : ,
  11. "partner_name" : "Galatea",
  12. "partner_sex_is_male" : false
  13. },
  14. "sex_is_male" : true
  15. }
  1. #include <bits/stdc++.h>
  2. //#include <json/json.h>
  3. #include </usr/include/jsoncpp/json/json.h>
  4. void readJson();
  5. void writeJson();
  6.  
  7. int main(int argc, char **argv)
  8. {
  9. readJson();
  10. writeJson();
  11. return ;
  12. }
  13.  
  14. void readJson()
  15. {
  16. using namespace std;
  17. std::string strValue =
  18. "{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}";
  19.  
  20. Json::Reader reader;
  21. Json::Value value;
  22.  
  23. if (reader.parse(strValue, value)) {
  24. std::string out = value["name"].asString();
  25. std::cout << out << std::endl;
  26. const Json::Value arrayObj = value["array"];
  27. for (unsigned int i = ; i < arrayObj.size(); i++) {
  28. if (!arrayObj[i].isMember("cpp"))
  29. continue;
  30. out = arrayObj[i]["cpp"].asString();
  31. std::cout << out;
  32. if (i != (arrayObj.size() - ))
  33. std::cout << std::endl;
  34. }
  35. }
  36. }
  37.  
  38. void writeJson()
  39. {
  40. using namespace std;
  41.  
  42. Json::Value root;
  43. Json::Value arrayObj;
  44. Json::Value item;
  45.  
  46. item["cpp"] = "jsoncpp";
  47. item["java"] = "jsoninjava";
  48. item["php"] = "support";
  49. arrayObj.append(item);
  50.  
  51. root["name"] = "json";
  52. root["array"] = arrayObj;
  53.  
  54. root.toStyledString();
  55. std::string out = root.toStyledString();
  56. std::cout << out << std::endl;
  57. }
  1. json
  2. jsoncpp
  3. {
  4. "array" : [
  5. {
  6. "cpp" : "jsoncpp",
  7. "java" : "jsoninjava",
  8. "php" : "support"
  9. }
  10. ],
  11. "name" : "json"
  12. }

jsoncpp的安装与使用示例的更多相关文章

  1. Thrift在Windows及Linux平台下的安装和使用示例

    本文章也同时发表在个人博客Thrift在Windows及Linux平台下的安装和使用示例上. thrift介绍 Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的R ...

  2. Redis 安装与简单示例

    Redis 安装与简单示例 一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或 ...

  3. TensorFlow入门,基本介绍,基本概念,计算图,pip安装,helloworld示例,实现简单的神经网络

    TensorFlow入门,基本介绍,基本概念,计算图,pip安装,helloworld示例,实现简单的神经网络

  4. Linux下安装GB2312的示例

    Linux下安装GB2312的示例 Step 1: 到Linux字符集的安装包目录下  [cd /usr/share/i18n/charmaps] Step 2: 解压该目录下的GB2312.gz   ...

  5. cesium安装及第一个示例

    cesium安装及第一个示例 一.环境要求 二.浏览器要求 三.安装node.js 四.下载cesium包(地址为https://cesiumjs.org) 包括了 五.在你的项目里引入相关js与cs ...

  6. Hadoop:pig 安装及入门示例

    pig是hadoop的一个子项目,用于简化MapReduce的开发工作,可以用更人性化的脚本方式分析数据. 一.安装 a) 下载 从官网http://pig.apache.org下载最新版本(目前是0 ...

  7. Redis 安装与简单示例 01_转

    一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或者64位.下载解压后图片如下 ...

  8. Redis 安装与简单示例 <第一篇>

    一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或者64位.下载解压后图片如下 ...

  9. Redis 安装与简单示例(转)

    本文转载自:http://www.cnblogs.com/kissdodog/p/3570984.html Redis的安装 Redis下载地址如下:https://github.com/dmajki ...

随机推荐

  1. 开源软件License汇总

    用到的open source code越多,遇到的开源License协议就越多.License是软件的授权许可,里面详尽表述了你获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的 ...

  2. [Latex] 所有字体embedded: Type3 PDF文档处理 / True Type转换为Type 1

    目录: [正文] Adobe Acrobat打印解决字体嵌入问题 [Appendix I] Type3转TRUE Type/Type 1 [Appendix II] TRUE Type转Type 1 ...

  3. 小学生都能写智能语音助手了,我这颗转战AI的心要何去何从?

    前言——我是不是老了 前天看了一个关于AI类的综艺节目我感觉整个人都不好了.这个综艺的名字叫<智造将来>上面那个小屁孩自己写了一个智能语音助手,这个小屁孩叫袁翊闳是2018年百度AI开发者 ...

  4. 说说 Python 的变量以及简单数据类型

    1 变量 先来看一个示例: news="我国第一个人工智能规划问世"print(news) 运行结果: 可以看出使用 Python 定义变量很简单,甚至都不需要指定变量的类型. 1 ...

  5. PAT甲级题解-1097. Deduplication on a Linked List (25)-链表的删除操作

    给定一个链表,你需要删除那些绝对值相同的节点,对于每个绝对值K,仅保留第一个出现的节点.删除的节点会保留在另一条链表上.简单来说就是去重,去掉绝对值相同的那些.先输出删除后的链表,再输出删除了的链表. ...

  6. 团队作业4——WBS练习

    一.作业要求 对团队项目进行任务分解 —要求所有人共同参与 队长列出需求 成员进行估计 队长领导大家达成共识 形成团队报告,发至团队博客 注意:分解的粒度最小不应超过6小时(即一个人在6小时以内能够完 ...

  7. 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方 ...

  8. 单片机pc指针

    单片机的PC是指程序计数器(Program Counter).程序计数器PC用于存放下一条将要执行的指令地址,是一个16位专用寄存器,不能通过MOV指令来操作,对用户来说是不可见的.当执行一条指令时, ...

  9. MySQL与Oracle集群主从复制工具

    Oracle提供了DataGuard:MySQL提供了Group Replication,简称MGR. Oracle DataGuard的文章:http://www.cnblogs.com/adolf ...

  10. [转帖知乎]5G 网络和 4G 网络有什么区别?

    5G 网络和 4G 网络有什么区别? 先放上一篇有史以来最强的5G科普: 一个简单且神奇的公式 今天的故事,从一个公式开始讲起. 这是一个既简单又神奇的公式.说它简单,是因为它一共只有3个字母.而说它 ...