course-jsoncourse-json JSON 表示 JavaScript Object Notation ( JavaScript 对象表示法),它是一种广泛用于Web上数据交换的数据格式。 JSON是在客户端和服务器之间组织数据的理想格式。它的语法类似于JavaScript编程语言。 JSON的主要目的是在客户端和Web服务器之间传输数据。它易于学习,是交换数据的最有效方法。它可以与各种编程语言一起使用,例如 Python , Perl , Java 等。
JSON 主要支持 JavaScript 中的6种数据类型:
JSON建立在两种结构上:
JSON数据表示形式类似于Python字典。以下是JSON数据的示例:
链接:https://www.learnfk.comhttps://www.learnfk.com/python3/python-json.html
来源:LearnFk无涯教程网
{ "book": [ { "id": 01, "language": "English", "edition": "Second", "author": "Derrick Mwiti" ], { { "id": 02, "language": "French", "edition": "Third", "author": "Vladimir" } }
Python提供了一个名为 json 的模块。 Python支持标准库编组和pickle模块,并且JSON API的行为与这些库相似。 Python本机支持JSON函数。
JSON数据的编码称为序列化。串行化是一种技术,其中数据以字节系列进行转换并通过网络传输。
反序列化是对转换为JSON格式的数据进行解码的反向过程。
输出:
['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_encoder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']
在本节中,无涯教程将学习以下方法:
序列化是将Python对象转换为JSON的技术。有时,计算机需要处理大量信息,因此最好将该信息存储到文件中。可以使用JSON函数将JSON数据存储到文件中。 json模块提供用于转换Python对象的 dump()和 dumps()方法。
Python对象将转换为以下JSON对象。列表如下:
Sr | Python对象 | JSON |
---|---|---|
1. | Dict | Object |
2. | list,tuple | Array |
3. | Str | String |
4. | int,float | Number |
5. | True | true |
6. | False | false |
7. | None | null |
考虑一个简单的序列化示例:
Import json # Key:value mapping student = { "Name" : "Peter", "Roll_no" : "0090014", "Grade" : "A", "Age": 20, "Subject": ["Computer Graphics", "Discrete Mathematics", "Data Structure"] } with open("data.json","w") as write_file: json.dump(student,write_file)
输出:
{"Name" : "Peter", "Roll_no" : "0090014" , "Grade" : "A", "Age" : 20, "Subject" : ["Computer Graphics", "Discrete Mathematics", "Data Structure"] }
在上面的程序中,以写入模式打开了一个名为 data.json 的文件。以写入模式打开此文件,因为如果该文件不存在,则会创建该文件。 json.dump()方法将字典转换为JSON字符串。
import json # Key:value mapping student = { "Name" : "Peter", "Roll_no" : "0090014", "Grade" : "A", "Age": 20 } b = json.dumps(student) print(b)
输出:
{"Name": "Peter", "Roll_no": "0090014", "Grade": "A", "Age": 20}
JSON支持原始数据类型,例如字符串和数字,以及嵌套列表,元组和对象。
import json #Python 列表转换为 JSON 数组 print(json.dumps(['Welcome', "to", "learnfk"])) #Python 元组转换为 JSON 数组 print(json.dumps(("Welcome", "to", "learnfk"))) # Python 字符串转换为 JSON 字符串 print(json.dumps("Hello")) # Python int 转换为 JSON 数字 print(json.dumps(1234)) # Python 浮点数转换为 JSON 数字 print(json.dumps(23.572)) #布尔转换为各自的值 print(json.dumps(True)) print(json.dumps(False)) # None值为空 print(json.dumps(None))
输出:
["Welcome", "to", "learnfk"] ["Welcome", "to", "learnfk"] "Hello" 1234 23.572 true false null
反序列化是将JSON数据解码为Python对象的过程。 json模块提供了两种方法 load()和 loads(),这些方法用于以实际的Python对象形式转换JSON数据。列表如下:
SR。 | JSON | Python |
---|---|---|
1. | Object | dict |
2. | Array | list |
3. | String | str |
4. | number(int) | int |
5. | true | True |
6. | false | False |
7. | null | None |
上表显示了序列化表的反面,但从技术上讲,这并不是JSON数据的完美转换。这意味着如果对对象进行编码并在一段时间后再次对其进行解码;可能无法取回相同的数据。
以现实生活为例,一个人将某物翻译成中文,另一人将其翻译成英文,而这可能无法完全翻译。考虑简单的示例:
import json a = (10,20,30,40,50,60,70) print(type(a)) b = json.dumps(a) print(type(json.loads(b)))
输出:
<class 'tuple'> <class 'list'>
import json # Key:value mapping student = { "Name" : "Peter", "Roll_no" : "0090014", "Grade" : "A", "Age": 20, } with open("data.json","w") as write_file: json.dump(student,write_file) with open("data.json", "r") as read_file: b = json.load(read_file) print(b)
输出:
{'Name': 'Peter', 'Roll_no': '0090014', 'Grade': 'A', 'Age': 20}
在上面程序中,使用 dump()函数在文件中编码了Python对象。之后,使用 load()函数读取JSON文件,并在其中传递了 read_file 作为参数。
JSON模块还提供 loads()函数,该函数用于将JSON数据转换为Python对象。它与 load()函数非常相似。考虑以下示例:
Import json a = ["Mathew","Peter",(10,32.9,80),{"Name" : "Tokyo"}] # Python 对象转换成 JSON b = json.dumps(a) # JSON 转换成 Python 对象 c = json.loads(b) print(c)
输出:
['Mathew', 'Peter', [10, 32.9, 80], {'Name': 'Tokyo'}]
json.load()函数用于加载JSON文件,而 json.loads()函数用于加载字符串。
当要将Python对象序列化为JSON文件时,使用 json.dump()函数,而 json.dumps()函数用于将JSON数据转换为字符串用于解析和打印。
有时需要分析和调试大量JSON数据。可以通过在json.dumps()和json.dump()方法中传递其他参数indent和sort_keys来完成。
import json person = '{"Name": "Andrew","City":"English", "Number":90014, "Age": 23,"Subject": ["Data Structure","Computer Graphics", "Discrete mathematics"]}' per_dict = json.loads(person) print(json.dumps(per_dict, indent = 5, sort_keys= True))
输出:
{ "Age": 23, "City": "English", "Name": "Andrew", "Number": 90014, "Subject": [ "Data Structure", "Computer Graphics", "Discrete mathematics" ] }
在上面的代码中,为indent参数提供了5个空格,并且键以升序排列。缩进的默认值为None, sort_key 的默认值为 False 。
编码是将文本或值转换为加密形式的技术。加密的数据只能由首选用户通过解码来使用。编码也称为串行化,而解码也称为反序列化。编码和解码是针对JSON(object)格式进行的。 Python为此类操作提供了流行的软件包。无涯教程可以通过以下命令将其安装在Windows上:
pip install demjson
encode编码 - demjson包提供了 encode()函数,该函数用于将Python对象转换为JSON字符串表示形式。语法如下:
demjson.encode(self,obj,nest_level = 0)
示例:1-使用demjson包进行编码
import demjson a = [{"Name": 'Peter',"Age":20, "Subject":"Electronics"}] print(demjson.encode(a))
输出:
[{"Age":20,"Name":"Peter","Subject":"Electronics"}]
decode解码 - demjson 模块提供了 decode()函数,该函数用于将JSON对象转换为Python格式类型。语法如下:
输出:
['Peter', 'Smith', 'Ricky', 'Hayden']
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)
PPT设计进阶 · 从基础操作到高级创意 -〔李金宝(Bobbie)〕