JSON
简述:
JavaScript Object Notation 译为 JavaScript 对象标记
本质概述:是一种轻量级的数据交换格式
再次强调 JSON是 一种数据交换格式
字符串是JSON的表现形式/载体
JSON对象 与 JSON字符串的区别
JSON对象, JSON, JSON字符串 之间的区别
绝大多数的答案,都站在JavaScript语言的角度,阐述区别
JSON是REST服务的标准格式
JSON的制定并不是专门为JavaScript设计的
它只是一种传输数据的一种格式
JavaScript与JSON的数据交换里面,和Python,C#没有区别
JSON的数据类型与JavaScript过于相似
JSON有自己的数据类型,仅和JavaScript相似
JavaScript只是一个实现标准方案之一
标准为:ECMASCRIPT -> ActionScript -> JSON的一个版本
某种程度JSON和JavaScript是一种平级的语言
误区(JSON与JavaScript,没有直接关系)
JSON与JavaScript都是对ECMASCRIPT这个W3C(团队)它所制定的脚本的规范和标准实现
JSON在最开始在前后端的分离起到了重要的作用,而服务器的语言种类繁多,前端最主流的就是JavaScript,因为JSON被大量的应用在JavaScript的交互中
还有一个微软的TypeScript只是JavaScript的超集
JSON对象
(1) 定义非常片面(在JavaScript中是存在的)
(2) 放到 Python中的话,是没有这个JSON对象的
轻量级的数据格式
web结构
反序列化
当你拿到的JSON,不是一个str,而是一个object,这是框架默认把str转换成一个object,但是我们原生拿到的就是一个str
拿到JSON,能够快速访问JSON字符串中相关的信息
把JSON字符串转换成Python中已知的数据结构
反序列化过程
# 引入内置json模块,其中包含一系列操纵JSON数据的方法 import json # json格式中,字符串的key 必需使用双引号,bool值为小写 json_str = '{"name":"qiyue", "age":18, "2":false}' JavaScript中为object数据结构 # 调用json模块中的内置方法,转换json字符串类型,转换为Python数据类型 Student = json.loads(json_str) print(Student) print(type(Student)) 转换后部分JSON格式特征,会转换为Python特征 {'name': 'qiyue', 'age': 18, '2': False} Python用dict类型,承载JSON中的object类型 <class 'dict'>
同一JSON字符串,在不同语言中,可能转换成不同的数据类型
这个转换过程 称为 *反序列化***
拓展:JSON数据类型 array(数组)
# 反序列化 # 引入内置json模块 import json as x json_str = '[{"name":"qiyue", "age":18, "2":false}, {"name":"qiyue", "age":18, "2":false}]' # 包含两个对象的数组 Student = x.loads(json_str) # 调用json模块中的内置方法,转换json格式字符串 print(Student) print(type(Student)) Python用list类型,承载JSON中的array类型 print(Student[1]['name']) 访问数组中对象的key
数组表示为一种集合,类似与 Python 中的 list,tuple 。只不过Python把集合分的比较细
比如 PHP 中只有一个数组,且非常强大的
这个是不同语言对集合不同的解构形式
数组其实就是一个集合
JSON 对应 Python 的数据类型
JSON Python object dict array list string str number int number float true/false True/False null None
若精通一门语言,入门其他语言相对比较容易
因为绝大数语言,对于基本数据结构的定义都大同小异
例如循环语句,面向对象等
现在很多语言就是经典C,C语言的语法糖,内部的实现机制,内存管理不同
现在很多语言就是类 C语言 ,语言就是一种工具
序列化
把Python的数据类型,向JSON字符串转换的过程
序列化过程
import json Student = [ {'name': 'qiyue', 'age': 18, '2': False}, {'name': 'qiyue', 'age': 18} ] json_str = json.dumps(Student) # dumps 接收一个object参数,dict 也是属于 object print(json_str) # [{"name": "qiyue", "age": 18, "2": false}, {"name": "qiyue", "age": 18}] print(type(json_str)) # <class 'str'>
不仅是 Python 数据向 JSON 转换,是序列化
把 XML 的字符串向 Python 转换,也是反序列化 / 序列化
PS:实在是想存储 object,可使用 NOSQL MongoDB