linux解析json编码,linux json
一、Json基础
JSON(JavaScript对象符号)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管数据是在爪哇岛描述语言的一个子集,但数据是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯100 .数据建构有两种结构:
1) "名称/值"对的集合(名称/值对得集合).不同的语言中,它被理解为对象(对象),记录(记录),结构(结构),字典(字典),哈希表(哈希表),有键列表(键控列表),或者关联数组(关联数组).
2)值的有序列表(有序的值列表).在大部分语言中,它被理解为数组(数组).
例如,现创建一个新的Java脚本语言变量,然后将数据格式的数据字符串直接赋值给它:
varpeople={
程序员:[
{ 名字:布雷特,姓氏:麦克劳林,电子邮件: aaaa },
{ 名字:杰森,姓氏:猎人,电子邮件: bbbb },
{ 名字:埃利奥特,姓氏:哈罗德,电子邮件: cccc }
],
作者:[
{ 名字:艾萨克,姓氏:阿西莫夫,体裁:科幻 },
{ 名字: Tad ,姓氏:威廉姆斯,流派:幻想 },
{ 名字:弗兰克,姓氏:佩雷蒂,流派:基督教小说 }
],
音乐家:[
{ 名字:埃里克,姓氏:克拉普顿,乐器:吉他 },
{ 名字:谢尔盖,姓氏:拉赫玛尼诺夫,乐器:钢琴 }
]}
这非常简单;现在人包含前面看到的数据格式的数据。
二、编译数据库
jsoncpp是一个c封装的数据包,跨平台支持windows、linux、unix等多系统。在窗子下面使用比较简单,直接往风险投资里面添加项目就可以了linux操作系统.下面编译需要使用到烤饼,烤饼是python工具,需要先安装好python。
1.下载源码包并解压scons-2.2.0.tar.gz
scons-2.2.0.tar.gz[root @ localhost NFS]# tarxzf
[root @ localhostnfs]# CD scons-2。2 .0
[root@localhostscons-2.2.0]# ls
CHANGES.txt清单README.txt sconsign.1setup.cfg
engineos _ spawnv _ fix。差异发布。txt scons-时间。1设置。巴拉圭
许可证. txt PKG信息scons.1脚本
2.设置环境变量(为scons-2.2.0的目录)
[root @ localhost JSON CPP-src-0。5 .0]#导出我的scons=/work/NFS/scons-2。2 .0
[root @ localhost JSON CPP-src-0。5 .0]# export SCONS _ LIB _ DIR=$ my SCONS/engine
3.下载源码包并解压jsoncpp-src-0.5.0.tar.gz
[root @ localhost NFS]# xzfjsoncpp-src-0.5.0.tar.gz
[root @ localhostnfs]# CD JSON CPP-src-0。5 .0
[root @ localhostjsoncpp-src-0。5 .0]# ls
作者doxybuild。pymakefiles scons-工具测试
开发者工具包括emaker发布。巴拉圭构造版本
文件许可证README.txt src
4.编译
[root @ localhostjsoncpp-src-0。5 .0]# python$my cons/script/scons平台=Linux-gcc
[root @ localhostjsoncpp-src-0。5 .0]# ls include/JSON/
自动链接。h特征。hjson。h值。h//头文件
forwards.hreader.h writer.h
[root @ localhostjsoncpp-src-0。5 .0]# ls libs/Linux-gcc-4。1 .2/
libjson _ Linux-gcc-4。1 .2 _ libmt。一个libjson _ Linux-gcc-4。1 .2 _ libmt。所以//库
三、测试
1.编写json_test.cpp
#包括输入输出流
#包含字符串
#包含 ./json/json.h
使用命名空间标准
int main(void)
{
stringstrJson={key1:value1 , array:[{key2:value2 , key3:aa},{key2:value3 , key3:bb},{key2:value4 , key 3 : cc }]} ;
JSON:reader reader;
JSON:StyledWriterstyled _ writer;
JSON:value val;
如果(!reader.parse(strJson,val))
return-1;
stringstr=val[key1].asString();
cout key 1: str endl;
JSON:value obj _ array=val[ array ];
cout styled _ writer。write(obj _ array)endl;
for(int I=0;I obj _ array。size();我)
{
str=obj_array[i][key2].asString();
cout key 2[ I ]: str endl;
str=obj_array[i][key3].asString();
cout key 2[ I ]: str endl;
}
返回0;
}
2.创建符号链接
[root @ localhost JSON CPP-src-0。5 .0]# ln-s/work/NFS/JSON CPP-src-0。5 .0/libs/Linux-gcc-4。1 .2/lib JSON _ Linux-gcc-4。1 .2 _ libmt。so/usr/local/lib/lib JSON。因此
[root @ localhost JSON CPP-src-0。5 .0]#/sbin/LD config//更新库
3.编译
[root @ localhost JSON CPP-src-0。5 .0]# g JSON _ test。CPP-LJ son
4.运行程序
[root @ localhostjsoncpp-src-0。5 .0]#。/a.out
关键字1:值一
[
{
关键字2 :值2 ,
按键3 : aa
},
{
键2 :值3 ,
按键3 : bb
},
{
关键字2 :值4 ,
按键3 :抄送
}
]
key2[0]:值2
key2[0]:aa
key2[1]:值3
按键2[1]:bb
key2[2]:值四
密钥2[2]:抄送