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 ...
随机推荐
- mfc 进程的诞生和死亡
进程概念 进程的诞生 进程的死亡 一. 进程: .简单的说 双击一个EXE图标时,系统就会产生一个相应的进程,分配相应的资源,并执行相应的代码. .标准一些的说法: 进程是一个具有独立功能 ...
- OpenCV学习C++接口 Mat像素遍历详解
OpenCV学习C++接口 Mat像素遍历详解
- R绘图 第四篇:绘制箱图(ggplot2)
箱线图通过绘制观测数据的五数总括,即最小值.下四分位数.中位数.上四分位数以及最大值,描述了变量值的分布情况.箱线图能够显示出离群点(outlier),离群点也叫做异常值,通过箱线图能够很容易识别出数 ...
- 设计模式 笔记 抽象工厂模式 Abstract Factory
//---------------------------15/04/09---------------------------- //Abstract Factory 抽象工厂----对象创建型模式 ...
- Asp.Net_Session跟Cookie的记住登陆名
最近在做ASP.NET的项目时,接触到了登陆权限模块,所有总结了一下登陆时用到的知识和方法技巧. 如图说明:实现的效果如图,由于验证码验证比较简单这里就不介绍了 首先用代码生成器生成项目,以三层为例进 ...
- openstack horizon 开发第三天
工作流:工作流是带有选项的复杂表单,每个工作流必须包含扩展Workflow, Step和的类Action1. url.py 路由处理 RESOURCE_CLASS = r'^(?P<resour ...
- 阿里云ubuntu16.04安装ruby
0x0 准备 环境:阿里云轻量服务器ubuntu16.04 目的:安装beef需要的ruby环境 更新软件 sudo apt-get update sudo apt-get upgrade sudo ...
- 假设检验,alpha,p值 通俗易懂的的理解。
假设检验: 一般原假设H0 :表是为 XXX和YYYY无显著差异,H1,是有显著差异. 如果我们定义alpha的值是0.05.意味着我们接受H0是真的但是我们却认为他是假的的概率. 这里你想想,这个值 ...
- Ajax实例OR技术原理 转自 (http://blog.csdn.net/evankaka )
摘要:AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX 是一种用于创建快速动态网页的 ...
- PAT甲题题解-1029. Median (25)-求两序列的中位数,题目更新了之后不水了
这个是原先AC的代码,但是目前最后一个样例会超内存,也就是开不了两个数组来保存两个序列了,意味着我们只能开一个数组来存,这就需要利用到两个数组都有序的性质了. #include <iostrea ...