JSON 与Python
JSON(JavaScript Object Notation)是一个主要用于在服务器和 Web 应用程序之间存储和传输数据的文件。它广泛用于表示结构化数据。在本文中,我们将讨论如何使用Python处理 JSON 数据。 Python提供了一个名为json的模块,它带有 Python 的标准内置实用程序。
注意:在Python中,JSON 数据通常表示为字符串。
导入模块
要在Python中使用任何模块,总是需要导入该模块。我们可以使用 import 语句来导入 json 模块。
示例:导入 JSON 模块
Python3
# importing json module
import json
Python3
# Python program to convert JSON to Dict
import json
# JSON string
employee ='{"name": "Nitin", "department":"Finance",\
"company":"GFG"}'
# Convert string to Python dict
employee_dict = json.loads(employee)
print("Data after conversion")
print(employee_dict)
print(employee_dict['department'])
print("\nType of data")
print(type(employee_dict))
Python3
# Python program to read
# json file
import json
# Opening JSON file
f = open('data.json',)
# returns JSON object as
# a dictionary
data = json.load(f)
# Iterating through the json
# list
for i in data:
print(i)
# Closing file
f.close()
Python3
# Python program to convert
# Python to JSON
import json
# Data to be written
dictionary = {
"name": "sunil",
"department": "HR",
"Company": 'GFG'
}
# Serializing json
json_object = json.dumps(dictionary)
print(json_object)
Python3
# Python program to write JSON
# to a file
import json
# Data to be written
dictionary ={
"name" : "Nisha",
"rollno" : 420,
"cgpa" : 10.10,
"phonenumber" : "1234567890"
}
with open("sample.json", "w") as outfile:
json.dump(dictionary, outfile)
Python3
# Import required libraries
import json
# Initialize JSON data
json_data = '[ {"studentid": 1, "name": "Nikhil", "subjects": ["Python", "Data Structures"]},\
{"studentid": 2, "name": "Nisha", "subjects": ["Java", "C++", "R Lang"]} ]'
# Create Python object from JSON string
# data
data = json.loads(json_data)
# Pretty Print JSON
json_formatted_str = json.dumps(data, indent=4)
print(json_formatted_str)
Python3
# Import required libraries
import json
# Initialize JSON data
json_data = '[ {"studentid": 1, "name": "Nikhil", "subjects":\
["Python", "Data Structures"], "company":"GFG"},\
{"studentid": 2, "name": "Nisha", "subjects":\
["Java", "C++", "R Lang"], "company":"GFG"} ]'
# Create Python object from JSON string
# data
data = json.loads(json_data)
# Pretty Print JSON
json_formatted_str = json.dumps(data, indent=4, sort_keys=True)
print(json_formatted_str)
解析 JSON – 从 JSON 转换为Python
json 模块的 load() 和 loading() 函数使得解析 JSON 对象变得更加容易。
解析 JSON 字符串
load() 方法用于解析Python中的 JSON字符串,结果将是Python字典。
句法:
json.loads(json_string)
示例:将 JSON 转换为字典
Python3
# Python program to convert JSON to Dict
import json
# JSON string
employee ='{"name": "Nitin", "department":"Finance",\
"company":"GFG"}'
# Convert string to Python dict
employee_dict = json.loads(employee)
print("Data after conversion")
print(employee_dict)
print(employee_dict['department'])
print("\nType of data")
print(type(employee_dict))
Data after conversion
{'name': 'Nitin', 'department': 'Finance', 'company': 'GFG'}
Finance
Type of data
注意:有关详细信息,请参阅将 JSON 中的数据解析为Python
读取 JSON 文件
load() 方法可以读取包含 JSON 对象的文件。假设您有一个名为 student.json 的文件,其中包含学生数据,并且我们想要读取该文件。
句法:
json.load(file_object)
示例:使用Python读取 JSON 文件
假设文件看起来像这样。
Python3
# Python program to read
# json file
import json
# Opening JSON file
f = open('data.json',)
# returns JSON object as
# a dictionary
data = json.load(f)
# Iterating through the json
# list
for i in data:
print(i)
# Closing file
f.close()
输出:
笔记:
- JSON 数据在Python中转换为字典列表
- 在上面的例子中,我们使用了 open() 和 close()函数来打开和关闭 JSON 文件。如果您不熟悉PythonPython的文件处理。
- 有关 readon JSON 文件的更多信息,请参阅使用Python读取 JSON 文件
从Python转换为 JSON
json 模块的 dump() 和 dumps() 方法可用于将Python对象转换为 JSON。
以下类型的Python对象可以转换为 JSON字符串:
- 听写
- 列表
- 元组
- 字符串
- 整数
- 漂浮
- 真的
- 错误的
- 没有任何
Python对象及其到 JSON 的等效转换:Python JSON Equivalent dict object list, tuple array str string int, float number True true False false None null
转换为 JSON字符串
dumps() 方法可以将Python对象转换为 JSON字符串。
句法:
json.dumps(dict, indent)
它需要两个参数:
- 字典:应转换为 JSON 对象的字典名称。
- 缩进:定义缩进的单位数
示例:将Python字典转换为 JSON字符串
Python3
# Python program to convert
# Python to JSON
import json
# Data to be written
dictionary = {
"name": "sunil",
"department": "HR",
"Company": 'GFG'
}
# Serializing json
json_object = json.dumps(dictionary)
print(json_object)
{"name": "sunil", "department": "HR", "Company": "GFG"}
注意:关于将 JSON 转换为字符串的更多信息,请参阅Python – 转换为 JSON字符串
写入 JSON 文件
dump() 方法可用于写入 JSON 文件。
句法:
json.dump(dict, file_pointer)
它需要2个参数:
- 字典:应转换为 JSON 对象的字典名称。
- 文件指针:以写入或追加模式打开的文件的指针。
示例:写入 JSON 文件
Python3
# Python program to write JSON
# to a file
import json
# Data to be written
dictionary ={
"name" : "Nisha",
"rollno" : 420,
"cgpa" : 10.10,
"phonenumber" : "1234567890"
}
with open("sample.json", "w") as outfile:
json.dump(dictionary, outfile)
输出:
格式化 JSON
在上面的示例中,您一定已经看到,当您将Python对象转换为 JSON 时,它不会被格式化并且输出是直线。我们可以通过将indent参数传递给 dumps() 方法来格式化 JSON。
示例:格式化 JSON
Python3
# Import required libraries
import json
# Initialize JSON data
json_data = '[ {"studentid": 1, "name": "Nikhil", "subjects": ["Python", "Data Structures"]},\
{"studentid": 2, "name": "Nisha", "subjects": ["Java", "C++", "R Lang"]} ]'
# Create Python object from JSON string
# data
data = json.loads(json_data)
# Pretty Print JSON
json_formatted_str = json.dumps(data, indent=4)
print(json_formatted_str)
[
{
"studentid": 1,
"name": "Nikhil",
"subjects": [
"Python",
"Data Structures"
]
},
{
"studentid": 2,
"name": "Nisha",
"subjects": [
"Java",
"C++",
"R Lang"
]
}
]
注意:有关详细信息,请参阅Python中的漂亮打印 JSON
排序 JSON
我们可以借助 dumps() 方法的sort_keys参数对 JSON 数据进行排序。此参数采用布尔值,如果传递的值为 True,则返回排序后的 JSON。默认情况下,传递的值为 False。
示例:对 JSON 进行排序
Python3
# Import required libraries
import json
# Initialize JSON data
json_data = '[ {"studentid": 1, "name": "Nikhil", "subjects":\
["Python", "Data Structures"], "company":"GFG"},\
{"studentid": 2, "name": "Nisha", "subjects":\
["Java", "C++", "R Lang"], "company":"GFG"} ]'
# Create Python object from JSON string
# data
data = json.loads(json_data)
# Pretty Print JSON
json_formatted_str = json.dumps(data, indent=4, sort_keys=True)
print(json_formatted_str)
[
{
"company": "GFG",
"name": "Nikhil",
"studentid": 1,
"subjects": [
"Python",
"Data Structures"
]
},
{
"company": "GFG",
"name": "Nisha",
"studentid": 2,
"subjects": [
"Java",
"C++",
"R Lang"
]
}
]