内容简介:JSON介绍,Python3标准库中json模块
拓展:Django中的JSONResponse()
一、JSON ?
JSON ( JavaScript Object Notation ) 是一种轻量级的数据交换语言,采用完全独立于编程语言的文本格式来存储和表示数据(受 JavaScript对象文字语法的启发 ),用于不同编程语言之间的数据交换。
看完上面之后,我们先来了解一下为什么要使用json ? 然后再一起去学习JSON中细节和Python语言中的json模块。
为何要使用json呢?
JSON格式是现在流行的数据交换格式,因为广泛使用,所以用它来做数据交换是很好的选择。假如我们用python语言开发的应用程序,需要将数据(字典或者嵌套列表)存储在文件中或者发送给前端程序或者是通过网络连接发送给某个远程机器,这时候我们就要选用一个双方统一约定出来的形式去表示python中复杂的数据类型,使其在其他的场景之下,这些数据对象能被直接保存或传递使用的,python中使用json保存结构化数据就要将我们的python对象转换为字符串表示形式,这个过程称为serializing(大都称此过程为序列化),然后作为接收一方的时候,我们可以将获得的这种格式字符串重建为python对象,这个过程称为deserializing(反序列化)。
ps: 我们可以约定各种形式去完成这种数据交换,比如说,我们可以使用Python中的文件操作,但是我们都知道,字符串可以很轻松地写入文件并读取为python中的字符串,数字的话,我们也可以读取字符串(如‘123’)之后,然后通过int()将字符串类型转变为数字值123, 但是这种手工的操作对于复杂的数据类型是非常麻烦的,序列化和反序列化的过程会变得十分复杂。
JSON建构于两种结构:
-
“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
-
值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
本篇博文中的有关JSON的理解都来源于JSON介绍的官方网站,博文中关于JSON介绍的图片的来源都出自这个网站。
基于上面的两种结构,json构建了自己的两种表现形式:
|
|
自动机描述 |
object |
对象是一个无序的“‘名称/值’对”集合。
示例:{"name": "marsen", "age": 18} |
|
array |
数组是值(value)的有序集合。
示例 :[ "marsen", 18 , {"id": "06", "score": 100} ] |
上面结构中的value:值(value)可以是双引