Python JSON
Python JSON
JSON 代表 JavaScript 对象符号,这是一种广泛用于网络数据交换的数据格式。JSON 是在客户机和服务器之间组织数据的理想格式。它的语法类似于 JavaScript 编程语言。JSON 的主要目标是在客户端和网络服务器之间传输数据。这很容易学习,也是交换数据最有效的方法。可以和**PerlJava**等各种编程语言配合使用。
JSON 主要支持 6 种数据类型在 JavaScript 中:
String
Number
Boolean
Null
Object
Array
JSON 建立在两种结构之上:
它将数据存储在名称/值对中。它被视为对象、记录、字典、哈希表、键控列表。
值的有序列表被视为数组、向量、列表或序列。
JSON 数据表示类似于 Python 字典。下面是一个 JSON 数据的例子:
|
使用 Python JSON
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'] |
在本节中,我们将学习以下方法:
load()
loads()
dump()
dumps()
序列化 JSON
序列化是将 Python 对象转换为 JSON 的技术。有时,计算机需要处理大量的信息,因此将这些信息存储到文件中是很好的。我们可以使用 JSON 函数将 JSON 数据存储到文件中。json 模块提供了用于转换 Python 对象的 dump() 和**dump()**方法。
Python 对象被转换为以下 JSON 对象。清单如下:
Python 对象 | 数据 |
---|---|
Dict | Object |
list, tuple | Array |
Str | String |
int,float | Number |
True | true |
False | false |
None | null |
dump()功能
将 JSON 数据写入文件
Python 提供了 dump() 功能,以 JSON 格式传输(编码)数据。它接受两个位置参数,第一个是要序列化的数据对象,第二个是需要写入字节的类似文件的对象。
让我们考虑简单的序列化示例:
|
输出:
{"Name" : "Peter", "Roll_no" : "0090014" , "Grade" : "A", "Age" : 20, "Subject" : ["Computer Graphics", "Discrete Mathematics", "Data Structure"] } |
在上面的程序中,我们已经在写入模式下打开了一个名为 data.json 的文件。我们以写入模式打开了该文件,因为如果该文件不存在,它将被创建。 json.dump() 方法将字典转换为 json 字符串。
dumps()功能
**dumps()**函数用于将序列化数据存储在 Python 文件中。它只接受一个参数,即用于序列化的 Python 数据。没有使用类似文件的参数,因为我们没有将数据写入磁盘。让我们考虑以下示例:
|
输出:
{"Name": "Peter", "Roll_no": "0090014", "Grade": "A", "Age": 20} |
JSON 支持原始数据类型,如字符串和数字,以及嵌套列表、元组和对象。
|
输出:
["Welcome", "to", "javaTpoint"] |
反序列化 JSON
反序列化是将 JSON 数据解码成 Python 对象的过程。json 模块提供了 load() 和**loads()**两种方法,用于将 JSON 数据转换为实际的 Python 对象形式。清单如下:
json | Python |
---|---|
Object | dict |
Array | list |
String | str |
number(int) | int |
true | True |
false | False |
null | None |
上表显示了序列化表的逆表,但从技术上讲,它不是 JSON 数据的完美转换。这意味着,如果我们对对象进行编码,并在一段时间后再次解码;我们可能拿不回同样的东西。
让我们举一个现实生活中的例子,一个人把一些东西翻译成中文,另一个人把它翻译回英文,这可能不完全是翻译。考虑一个简单的例子:
|
输出:
<class 'tuple'> |
load()功能
load() 函数用于将 JSON 数据从文件反序列化为 Python 对象。考虑以下示例:
|
输出:
{'Name': 'Peter', 'Roll_no': '0090014', 'Grade': 'A', 'Age': 20} |
在上面的程序中,我们已经使用 dump() 函数对文件中的 Python 对象进行了编码。之后我们使用 load() 函数读取 JSON 文件,这里我们已经传递了 read_file 作为参数。
json 模块还提供了 loads() 函数,用于将 JSON 数据转换为 Python 对象。这与**load()**功能非常相似。考虑以下示例:
|
输出:
['Mathew', 'Peter', [10, 32.9, 80], {'Name': 'Tokyo'}] |
json.load()与 json.loads()
json.load() 函数用于加载 json 文件,而 json.loads() 函数用于加载字符串。
json.dump()与 JSON.dumps()
当我们想要将 Python 对象序列化为 json 文件时,使用 json.dump() 函数,使用**JSON . dump()**函数将 JSON 数据转换为字符串进行解析和打印。
Python 漂亮打印 JSON
有时我们需要分析和调试大量的 JSON 数据。这可以通过在 json.dump()和 JSON.dump()方法中传递额外的参数 indent 和 sort_keys 来实现。
注意:dump()和 dumps()函数都接受缩进和短键参数。
考虑以下示例:
|
输出:
{ |
在上面的代码中,我们为缩进参数提供了 5 个空格,并且键是按升序排序的。缩进的默认值为False,** Sort_key的默认值为False**。
编码和解码
编码是将文本或值转换成加密形式的技术。加密数据只能由首选用户通过解码来使用。编码也称为序列化,解码也称为反序列化。对 JSON(对象)格式进行编码和解码。Python 为此类操作提供了一个流行的包。我们可以通过以下命令在 Windows 上安装它:
|
编码-demjson 包提供了 encode() 函数,用于将 Python 对象转换为 json 字符串表示。语法如下:
|
示例:1 -使用 demjson 包进行编码
|
输出:
[{"Age":20,"Name":"Peter","Subject":"Electronics"}] |
解码-demjson模块提供**解码()**功能,用于将 json 对象转换为 Python 格式类型。语法如下:
|
输出:
['Peter', 'Smith', 'Ricky', 'Hayden'] |
在本教程中,我们已经了解了 Python JSON。JSON 是客户端和 web 服务器之间传输数据最有效的方式。