文章目录
引言(Introduction)
写在文章开头的一句话。本文内容的参考资料在网上都能够找得到,本文仅代表笔者关于json的学习笔记。
在介绍cJSON的使用与源码之前,特地根据cJSON的Github的介绍,前往json数据格式的介绍网站学习了一下json数据结构。根据官网上的介绍与Wikipedia的介绍,JSON(JavaScript Object Notation)是一种开放的标准文件格式与数据交互格式,其使用人们可以阅读的文本存储键值对信息。JSON采用的是完全独立于编程语言的文本格式,虽然其是从JavaScript继承下来的,但是现代的编程语言都能够产生与解析JSON数据。
1.JSON总体结构(overall structure)
JSON总体结构包含以下两种:
- 键值对的集合(A set of key-value pair)。即由一个键和对应的值构成的集合。
“不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)”;
上图是一个对象的结构,可以看到,键值对"string:value"中,使用字符串格式代表键名,使用value表示键的值。键的值可以为字符串,数字或者一个对象等。
“对象是一个无序的“‘名称/值’对”集合。一个对象以 {
左括号 开始, }
右括号 结束。每个“名称”后跟一个 :
冒号 ;“‘名称/值’ 对”之间使用 ,
逗号分隔。”
- 值的有序列表(An ordered list of values)。即数组。
数组就是普通意义上的数组,以左中括号[
开始,到右中括号]
结束。
2.JSON数值结构(value structure)
JSON的内部中包含的数据类型即值的类型,可以为字符串(string),数字(number)等。
其字符串是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
数字类型(number)也与C或者Java的数值非常相似。
而空白可以加入到json结构中的任意符号之间。
3.例子(example)
本文给出一个简单的例子,后续实验都是在该例子的基础上对cJSON进行介绍。
{
"name": "Zhang San", // string
"sex": 1, // boolen
"height": 1.8 // number, double
"family": [ // array
{
"name": "Zhang Si",
"relationship": "Father"
},
{
"name": "Li Si",
"relationship": "Mother"
}
],
"birthday": { // object
"year": 2000,
"month": 1,
"day":1
},
}
上式是一个简单例子,笔者尽可能地在该例子中包含各种类型的数值了。
4.总结(Conclusion)
json数据类型在交互数据中是非常常用的,不仅应用到数据传送中,在配置文件中也经常用到该数据结构。所以笔者就以这篇文章作为后续对cJSON学习的开篇了。