| 1 JSON简介
| 1.1 什么是JSON?
JSON或JavaScript Object Notation是一种结构化数据的格式。
| 1.2 JSON作用
与 XML一样,它是格式化数据的一种方式。Web 应用程序使用这种格式的数据来相互
通信。
| 1.3 为什么使用JSON
事实上,每当我们声明一个变量并为其赋值时,保存值的不是变量,而是变量只是在内存中保存了一个存储初始化值的地址。进一步解释,举个例子:
age = 21;
当我们使用age时,它被替换为21,但这并不意味着age包含21,而是意味着变量age包含存储21的内存位置的地址。现在想象一下你必须传输数据并在其他地方使用它(可能像 API),那么我们将如何共享它呢?一种方法可能是将您的计算机的整个内存连同所需位置的地址一起发送,正如您现在可能已经理解的那样,这根本不是一个好方法,而且发送您的整个计算机内存也是有风险的。基于这个原因 JSON 来救场了,JSON 将数据序列化并将其转换为人类可读和可理解的格式,这也使其能够传输并能够通信。
| 2 使用JSON
Python 通过一个名为 JSON 的内置包支持 JSON。要使用JSON,需要先进行导入:
import json
先来准备数据:
movies = [
{"id": 1, "title": "Terminator", "year": 1984},
{"id": 2, "title": "Kindergarten Cop", "year": 1993},
]
打印一下数据的类型
print(type(movies)) # <class 'list'>
使用json包中的dumps()方法,将对象转换为JSON
data = json.dumps(movies)
print(type(data)) # <class 'str'>
Tips : 请注意转换为JSON后是不是把列表转换为一个JSON串了。
| 3 序列化JSON
编码 JSON 的过程通常称为序列化。该术语是指将数据转换为一系列字节(因此是串行的)以通过网络存储或传输。为了处理文件中的数据流,Python 中的 JSON 库使用 dump() 函数将 Python 对象转换为各自的 JSON 对象,因此可以轻松地将数据写入文件。
Python 对象 | JSON对象 |
dict | object |
list、tuple | array |
str | string |
int、long、float | numbers |
True | true |
False | false |
None | null |
Serialization Example :
在这里我们使用python中提供的上下文管理器,创建一个名为movies.json的文件,并以写入模式打开它
with open("movies.json", "w") as f:
json.dump(movies, f)
Tips : 在这里,dump() 首先有两个参数,要序列化的数据对象,其次是要写入的对象(字节格式)。
Result :
[
{
"id": 1,
"title": "Terminator",
"year": 1984
},
{
"id": 2,
"title": "Kindergarten Cop",
"year": 1993
}
]
Tips : 当然你也可以借用python中的Path中的write_text()函数,在这里不进行赘述,大家可以自行借助搜索引擎。
| 4 反序列化JSON
反序列化与序列化相反,即将 JSON 对象转换为它们各自的 Python 对象。load() 方法用于它。如果你使用过其他程序的 JSON 数据或者获取的 JSON 的字符串格式,那么可以很容易地用 load() 进行反序列化,通常用于从字符串加载,否则,根对象在 list 或 dict 中.
with open("movies.json", "r") as f:
data = json.load(f)
print(data)
| 5 写在最后
本节给大家介绍了Python中处理Json数据。很重要的内容,但是初学者很容易过分钻研,实则没什么必要,json在很多地方有很重要的应用,如果你的项目中用到了它,别忘了python中存在json这个很方便的工具。勤能补拙是良训,希望大家还是动手做一做,有问题可以私信我,欢迎交流和提出您的宝贵意见。
勘误:
由于我自己也不是资深编程高手,在创作此内容时尽管已经力求精准,查阅了诸多资料,还是难保有所疏漏,如果各位发现有误可以公众号内留言,欢迎指正。
你要偷偷学Python,然后惊艳所有人。
-END-
感谢大家的关注
你关心的,都在这里