数据序列化导读(1)[JSON]

所谓数据序列化(Data Serialization), 就是将某个对象的状态信息转换为可以存储或传输的形式的过程。 那么,为什么要进行序列化?

  • 首先,为了方便数据存储;
  • 其次,为了方便数据传递。

在数据序列化期间,某个对象的当前状态被写入到临时或永久存储区。随后,可以把序列化到存储区的数据(通过网络)传输出去,然后进行反序列化,重新创建该对象。 运行在节点A上的某个对象X的当前状态,可以理解为保存在节点A的内存里的某个结构体。那么要把节点A上的对象X的状态信息传递到节点B上,把对象X的状态信息从内存中dump出来并序列化是必不可少的。支持数据序列化的常见格式有XML(Extensible Markup Language), JSON 和YAML。接下来本系列将首先介绍一下JSON。

1. 什么是JSON?

JSONJavaScript Object Notation的缩写。简单来说,JSON是一种轻量级的数据交换格式,易于人类阅读和书写,同时也易于机器解析和生成。它基于JavaScript语言而实现, 是open ECMAScript standard的一个子集。 JSON采用完全独立于语言的文本格式,但也使用了类似于C语言家族的习惯。这些特性使得JSON成为了一种理想的数据交换语言。

特别注意的是: JSON的字符串必须用双引号引用起来

2. 构建JSON的结构

  • A collection of name/value pairs(键/值对集合), 即对象(object), 也就是字典(dict)。使用{ }表示,与Python的dict类似。
  • An ordered list of values (值的有序表),即数组(array)。使用[ ]表示,与Python的list类似。

注意:上面的截图来源戳这里

2.1 对象(object)

在其他语言中,对象(object)又称为字典(dict),纪录(record),结构(struct),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。在JSON中,通常把键/值对集合称之为对象(Object)(P.S. 本人习惯于字典的叫法)。对象是一个无序的“‘键/值’对”集合。一个对象以“{”开始,“}”结束。每个“键”后跟一个“:”(冒号);“‘键/值’ 对”之间使用“,”(逗号)分隔。例如:

1 var Goddess = {
2    "FirstName" : "Grace",
3    "LastName" : "Liu",
4    "Age" :  "18"
5 };

2.2 数组(array)

数组很好理解,跟C语言的数组没什么不同,跟Python的list一样。数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。例如:

1 var Students = [
2     {"name":"John", "age":"23", "city":"Agra"},
3     {"name":"Steve", "age":"28", "city":"Delhi"},
4     {"name":"Peter", "age":"32", "city":"Chennai"},
5     {"name":"Chaitanya", "age":"28", "city":"Bangalore"}
6 ];

3. 值(value)的类型

  • 字符串(string)
  • 数字(number)
  • 对象(object(即字典))
  • 数组(array)
  • 布尔值(boolean)
  • 空值(null)

 

3.1 字符串(string)

  • 字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。
  • 单个字符(character)即一个单独的字符串(character string)。
  • 字符串(string)与C语言的字符串非常相似。

3.2 数值(number)

  • 数值(number)也与C的数值非常相似。
  • 不使用8进制和16进制编码。

参考资料:

猜你喜欢

转载自www.cnblogs.com/idorax/p/9100154.html