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++实现
- Json介绍以及C++实现
- 红黑树的介绍以及代码实现(C++)
- JSON的简单介绍以及C语言的JSON库使用
- JSON的简单介绍以及C语言的JSON库使用
- JSON的简单介绍以及C语言的JSON库使用
- [C++]Json介绍
- C语言—atoi函数的介绍以及实现
- 合并排序算法介绍,以及C语言实现
- json-c 0.12 使用介绍
- JSON-C结构介绍、使用
- C#解析json以及简单的介绍
- Json 介绍 以及与XML 对比
- 19.JSON数据格式讲解以及fastjson介绍
- JSON简要介绍以及使用JavaScript解析JSON文件
- 数组、单链表和双链表介绍 以及 双向链表的C/C++/Java实现
- 数组、单链表和双链表介绍 以及 双向链表的C/C++/Java实现
- 数组、单链表和双链表介绍 以及 双向链表的C/C++/Java实现
- Dijkstra 算法介绍以及实现
- Mysql系列(一) 简介
- 【Unity】计时器
- 仿直播间玩色子游戏,AnimatorSet的综合使用
- scala sealed trait
- error: insufficient permission for adding an object to repository database ./objects
- Json介绍以及C++实现
- php开启openssl
- Java虚拟机学习(10):类加载器(ClassLoader)
- spring ioc 解耦方式的实现
- 什么是WEB?EJB?
- 用文件方式复制内容到另一个文件
- "严重: Null component Catalina:type=JspMonitor,name=jsp,WebModul Unsupported major.minor version 51.0
- 使用了cdn,如何获取客户端真实ip?
- Mysql系列(二)应用场所