Json介绍以及C++实现

来源:互联网 发布:支持spi的读卡器淘宝 编辑:程序博客网 时间:2024/06/16 04:50

介绍

Json(JavaScript Object Notation)是一种轻量级的数据交换格式,使用完全独立于语言的文本格式,即可以实现不同编程语言间的数据交换。使用起来很方便。本文的写作背景就是通过Json实现C++与PHP的数据交换

格式

Json采用映射的方法记录数据,即一个名称对应一个或多个值,这种存储方式建立在两种结构之上:

(1)"名称/值"对的集合(一对一),即一个名称对应一个值,类似于C++的数据结构;

(2)值的有序列表(一对多),即一个名称对应多个值,类似于C++的数组。

为了便于理解Json的规则,我们先来写一个Json格式数据:

{
"provinces":[
{"name":"湖北","cities":[
{"name":"武汉","quxian":["洪山区","武昌区","江夏区","江汉区"]},
{"name":"荆州","quxian":["荆州区","沙市区"]},
{"name":"宜昌","quxian":["点军区","西陵区","夷陵区"]},
{"name":"襄阳","quxian":["襄州区","樊城区"]}
]
},
{"name":"湖南","cities":[
{"name":"长沙","quxian":["开福区","芙蓉区","雨花区"]},
{"name":"湘潭市" ,"quxian":["湘潭县","岳塘区","雨湖区"]},
{"name":"株洲市","quxian":["天元区","石峰区","荷塘区"]}
]
}
]
}

这条数据有点长,记录的是湖南、湖北两省主要城市的信息,为了便于分析,我按照我的理解将它分成不同的级别,看不懂没关系,对照下面的解析规则,我们一步步分析。

1.映射的集合用大括号("{}")表示。可以理解为每一个大括号都是一个struct。

2.映射用冒号(":")表示。映射类似于C++的数组概念,冒号前的为数组名,后面为数组的值,可以只有一个值,也可以有多个。上例中,provinces,name,cities,quxian均为映射,provinces的值为冒号后面方括号内的数据,方括号表示provinces有多个值,即记录了多个省的信息,name的值为冒号后面的数据,只有一个。

3.并列数据用(",")隔开,表示这些数据级别一致,上例中每一个方括号。

4.并列数据集合用方括号("[]")表示。方括号的概念和数组的概念完全重合,上例中,"quxian"可以看做一个string型数组,而cities和provinces可以看做一个结构体数组。

按照上面的编写规则,结合例子的层级划分,相信理解Json的结构就轻而易举了。

C++实现

0 0