Jsoncpp的使⽤详细教程
Jsoncpp的使⽤详细教程
本⽂详细介绍Jsoncpp的⼊门知识以及下载、使⽤。具体实现基于linux系统。笔者的系统为CentOS 7。
Jsoncpp简介
JSON(JavaScript Object Notation) 是⼀种轻量级的数据交换格式。 易于⼈阅读和编写。同时也易于机器解析和⽣成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的⼀个⼦集。 JSON采⽤完全独⽴于语⾔的⽂本格式,但是也使⽤了类似于C语⾔家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语⾔。
JSON建构于两种结构:
“名称/值”对的集合(A collection of name/value pairs)。不同的语⾔中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
值的有序列表(An ordered list of values)。在⼤部分语⾔中,它被理解为数组(array)。
这些都是常见的数据结构。事实上⼤部分现代计算机语⾔都以某种形式⽀持它们。这使得⼀种数据格式在同样基于这些结构的编程语⾔之间交换成为可能。
Jsoncpp的数据形式
JSON具有以下这些数据形式:
对象是⼀个⽆序的“‘名称/值’对”集合。⼀个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟⼀个“:”(冒号);“‘名称/值’ 对”之间使⽤“,”(逗号)分隔。
数组是值(value)的有序集合。⼀个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使⽤“,”(逗号)分隔。
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使⽤反斜线转义。⼀个字符(character)即⼀个单独的字符串(character string)。字符串(string)与C或者Java的字符串⾮常相似。
数值(number)也与C或者Java的数值⾮常相似。除去未曾使⽤的⼋进制与⼗六进制格式。除去⼀些编码细节。空⽩可以加⼊到任何符号之间。
Jsoncpp的安装
将jsoncpp下载到当前⽂件夹下。
jsoncpp可以采⽤scons进⾏编译,因此需要先安装scons。需要注意的是,Scons需要安装了Python才能使⽤。linux下安装Python的步骤此处不在赘述。我们假设系统中已经安装了Python,可以采⽤下⾯的命令获取Scons:
Scons以及Jsoncpp具体的安装步骤如下:
#tar -zxvf scons-2.2.
#cd scons-2.2.0
#python setup.py install
#tar -zxvf
#cd jsoncpp
#scons platform=linux-gcc
#cp libs/linux-gcc-4.8.5/libjson_linux-gcc-4.8.5_libmt.so /lib
#ln /lib/libjson_linux-gcc-4.8.5_libmt.so /lib/libjson.so
#cp include/json/ /usr/include/
#ldconfig
#./bin/linux-gcc-4.8.5/test_lib_json
prototype赛车
【注意这⾥的版本号可能不同】先通过cd libs进⼊libs⽬录,再⽤“ls”命令查看⾃⼰的版本号,然后在上述步骤中修改成⾃⼰的版本 号即可。
执⾏上述命令之后,屏幕出现下列提⽰信息:
…
Testing CharReaderAllowSpecialFloatsTest/issue209: OK
Testing BuilderTest/settings: OK
Testing IteratorTest/distance: OK
Testing IteratorTest/names: OK
Testing IteratorTest/indexes: OK
Testing IteratorTest/const: OK
Testing RValueTest/moveConstruction: OK
All 57 tests passed
由此说明Jsoncpp已经顺利安装完成。
Jsoncpp使⽤⽰例
例1:
程序test1.cpp代码如下:
#include <json/json.h> //需要在程序中添加json.h头⽂件
#include <iostream>
gets函数是什么意思#include <fstream>
using namespace std;
int main()
{
ifstream ifs;
ifs.open("testjson.json");
if(!ifs.is_open())
{
cout<<"open file error!"<<endl;
return1;
}
Json::Reader reader;
jquery发送jsonJson::Value root;
if (!reader.parse(ifs, root, false))
{
return -1;
}
std::string name = root["name"].asString();
int age = root["age"].asInt();
std::cout<<name<<std::endl;
std::cout<<age<<std::endl;
return0;
}
⽂件testjson.json中的内容如下:
使⽤如下命令对程序进⾏编译:
g++ -o test1 test1.cpp -ljson
执⾏编译得到的⽂件得到如下结果:
例2,json写⼊:
程序test2.cpp代码如下:
thymeleaf ajax#include<json/json.h>
#include<iostream>
#include<fstream>
using namespace std;
python入门教程(非常详细)书int main()
{
Json::Value root;
Json::FastWriter writer;
Json::Value person;
person["name"] = "hello world";
person["age"] = 100;
root.append(person);
即时通讯源码一般收费std::string json_file = writer.write(root);
ofstream ofs;
ofs.open("test2.json");
if(!ofs.is_open())
{
cout<<"open file error!"<<endl;
return -1;
}
ofs<<json_file;
ofs.close();
return0;
}
将程序编译后,执⾏。得到⽂件test2.json中的内容如下: [{“age”:100,”name”:”hello world”}]
本⽂部分整理⾃博客:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论