Python JSON

Python JSON

JSON,全称JavaScript对象表示法,是一种用于在线数据交换的流行数据格式。JSON是在客户端和服务器之间组织数据的最佳格式。编程语言JavaScript的语法与此语言类似。JSON的主要目标是在客户端和Web服务器之间进行数据传输。它是交换数据的最有效方法,且易于掌握。它与许多其他编程语言兼容,包括Python、Perl、Java等。

在JavaScript中,JSON主要支持以下六种数据形式:

  • 字符串
  • 数字
  • 布尔
  • 空值
  • 对象
  • 数组

JSON的基础是两个结构:

  • 数据以名称/值对的形式保留。它可以像记录、对象、字典、哈希表或键值列表一样处理。
  • 数组、向量、列表或序列都被视为值的有序列表。

Python字典类似于JSON数据结构。下面是JSON数据的示例:

{
 "book": [
  { 
       "id": 01,
"language": "English",
"edition": "Second",
"author": "Derrick Mwiti" 
],
   {
  { 
    "id": 02,
"language": "French",
"edition": "Third",
"author": "Vladimir" 
}
}

利用Python JSON

Json是Python提供的一个模块。Python支持标准库中的marshal和pickle模块,并且JSON API的功能与这些库类似。Python本身原生支持JSON的特性。

将JSON数据序列化的过程被称为编码。数据被转化为一系列字节,并使用序列化技术通过网络传送。

import json
print(dir(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数据存储在文件中。dump()和dumps()方法可在json模块中使用,并用于修改Python对象。

以下JSON项是由Python对象创建的。以下是每个列表:

Sr. Python Objects JSON
1. Dict Object
2. list, tuple Array
3. Str String
4. int, float Number
5. True true
6. False false
7. None null
  • 将 JSON 数据写入文件的 dump 函数

Python 中有一个 dump() 函数,用于以 JSON 格式进行数据通信(编码)。它接受两个位置参数:需要序列化的数据对象和需要接收字节的类似文件的对象。

让我们来看一个简单的序列化示例:

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字符串。

  • 函数dumps()

使用dumps()函数将序列化的数据保存在Python文件中。它只接受一个参数,即要序列化的Python数据。我们不会将数据写入磁盘,因此不使用类似文件的参数。让我们思考以下示例:

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  list conversion to JSON  Array 
print(json.dumps(['Welcome', "to", "javaTpoint"]))

#Python  tuple conversion to JSON Array 
print(json.dumps(("Welcome", "to", "javaTpoint")))

# Python string conversion to JSON String 
print(json.dumps("Hello"))

# Python int conversion to JSON Number 
print(json.dumps(1234))

# Python float conversion to JSON Number 
print(json.dumps(23.572))

# Boolean conversion to their respective values 
print(json.dumps(True))
print(json.dumps(False))

# None value to null 
print(json.dumps(None)) 

输出:

["Welcome", "to", "javaTpoint"]
["Welcome", "to", "javaTpoint"]
"Hello"
1234
23.572
true
false
null

JSON 反序列化

将 JSON 数据转换为 Python 对象的过程被称为反序列化。json 模块的 load() 和 loads() 方法用于将 JSON 数据转换为 Python 对象。以下是每个方法的列表:

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'>
  • load() 方法

使用 load() 函数将文件中的 JSON 数据反序列化为 Python 对象。考虑以下示例:

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()函数和参数read_file读取JSON文件。

load()函数是json模块的另一个特性,用于将JSON输入转换为Python对象。它与load()函数非常相似。考虑以下实例:

Import json
a = ["Mathew","Peter",(10,32.9,80),{"Name" : "Tokyo"}]

# Python object into JSON 
b = json.dumps(a)

# JSON into Python Object
c = json.loads(b)
print(c)

输出:

['Mathew', 'Peter', [10, 32.9, 80], {'Name': 'Tokyo'}]

json.load() vs json.loads()

JSON文件使用json.load()函数加载,而字符串使用json.loads()函数加载。

json.dump() vs json.dumps()

当我们想要将Python对象序列化为JSON文件时,我们使用json.dump()函数。我们还使用json.dumps()函数将JSON数据转换为字符串以进行处理和打印。

Python Pretty Print JSON

有时需要分析和调试大量的JSON数据。我们可以通过为json.dumps()和json.dump()函数提供额外的参数,如indent和sort_keys来实现。

注意:dump()和dumps()函数都接受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"
    ]
}

键按升序排序,并且在上述代码中将缩进参数设定为五个空格。sort_key的默认值为False,indent的默认值为None。

编码与解码

将文本或值转换为加密形式的过程称为编码。只有选择的用户可以在解码后使用加密数据。序列化是编码的另一个名称,反序列化是解码的另一个名称。对于JSON(对象)格式,执行编码和解码。Python中提供了一个用于这些任务的受欢迎的模块。可以使用以下命令在Windows上安装它:

pip install demjson

编码 - encode()函数是demon包中的一部分,用于将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"}]

解码 - demon 模块中的 decode() 函数用于将 JSON 对象转换为 Python 格式类型。

接下来是语法:

Import demjson
a = "['Peter', 'Smith', 'Ricky', 'Hayden']"
print(demjson.decode(a))

输出:

['Peter', 'Smith', 'Ricky', 'Hayden']

在本教程中,我们学习了关于Python JSON的内容。JSON是在客户端和Web服务器之间传输数据的最有效方式。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程