使用Python读取、写入和解析 JSON
JSON 是一种用于数据交换的轻量级数据格式,人类易于读写,机器易于解析和生成。它是一种完全独立于语言的文本格式。为了处理 JSON 数据, Python有一个名为 json 的内置包。
Example:
s = '{"id":01, "name": "Emily", "language": ["C++", "Python"]}'
JSON 的语法被认为是 JavaScript 语法的子集,包括以下内容:
- 名称/值对:表示数据,名称后跟 ':'(冒号),名称/值对由 (逗号) 分隔。
- 花括号:容纳对象。
- 方括号:保存值由 (逗号) 分隔的数组。
键/名称必须是带双引号的字符串,值必须是以下数据类型:
- 细绳
- 数字
- 对象(JSON 对象)
- 大批
- 布尔值
- 空值
Example:
{
"employee": [
{
"id": "01",
"name": "Amit",
"department": "Sales"
},
{
"id": "04",
"name": "sunil",
"department": "HR"
}
]
}
解析 JSON(从 JSON 转换为Python)
json.loads() 方法可以解析一个 json字符串,结果将是一个Python字典。
句法:
json.loads(json_string)
例子:
Python3
# Python program to convert JSON to Python
import json
# JSON string
employee ='{"id":"09", "name": "Nitin", "department":"Finance"}'
# Convert string to Python dict
employee_dict = json.loads(employee)
print(employee_dict)
print(employee_dict['name'])
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['emp_details']:
print(i)
# Closing file
f.close()
Python3
# Python program to convert
# Python to JSON
import json
# Data to be written
dictionary ={
"id": "04",
"name": "sunil",
"department": "HR"
}
# Serializing json
json_object = json.dumps(dictionary, indent = 4)
print(json_object)
Python3
# Python program to write JSON
# to a file
import json
# Data to be written
dictionary ={
"name" : "sathiyajith",
"rollno" : 56,
"cgpa" : 8.6,
"phonenumber" : "9976770500"
}
with open("sample.json", "w") as outfile:
json.dump(dictionary, outfile)
输出:
{'id': '09', 'department': 'Finance', 'name': 'Nitin'}
Nitin
Python读取JSON文件
json.load() 方法可以读取包含 JSON 对象的文件。考虑一个名为 employee.json 的文件,其中包含一个 JSON 对象。
句法:
json.load(file_object)
示例:假设 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['emp_details']:
print(i)
# Closing file
f.close()
输出:
在这里,我们使用了 open()函数来读取 JSON 文件。然后,使用 json.load() 方法解析文件,该方法为我们提供了一个名为 data 的字典。
从Python转换为 JSON
json.dumps() 方法可以将Python对象转换为 JSON字符串。
句法:
json.dumps(dict, indent)
它需要两个参数:
- 字典 -应转换为 JSON 对象的字典名称。
- indent –定义缩进的单位数
例子:
Python3
# Python program to convert
# Python to JSON
import json
# Data to be written
dictionary ={
"id": "04",
"name": "sunil",
"department": "HR"
}
# Serializing json
json_object = json.dumps(dictionary, indent = 4)
print(json_object)
{
"id": "04",
"name": "sunil",
"department": "HR"
}
输出:
{
"depatment": "HR",
"id": "04",
"name": "sunil"
}
以下类型的Python对象可以转换为 JSON字符串:
- 听写
- 列表
- 元组
- 字符串
- 整数
- 漂浮
- 真的
- 错误的
- 没有任何
Python对象及其到 JSON 的等效转换:Python JSON Equivalent dict object list, tuple array str string int, float number True true False false None null
将 JSON 写入文件
json.dump() 方法可用于写入 JSON 文件。
句法:
json.dump(dict, file_pointer)
它需要2个参数:
- 字典 -应转换为 JSON 对象的字典名称。
- 文件指针——以写入或附加模式打开的文件的指针。
Python3
# Python program to write JSON
# to a file
import json
# Data to be written
dictionary ={
"name" : "sathiyajith",
"rollno" : 56,
"cgpa" : 8.6,
"phonenumber" : "9976770500"
}
with open("sample.json", "w") as outfile:
json.dump(dictionary, outfile)
输出:
上面的程序使用 'w' 以写模式打开一个名为 sample.json 的文件。如果文件不存在,将创建该文件。 Json.dump() 会将字典转换为 JSON字符串,并将其保存在文件 sample.json 中。