📜  JSON 与Python

📅  最后修改于: 2022-05-13 01:54:39.222000             🧑  作者: Mango

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 文件

假设文件看起来像这样。

读取 json Python

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
dictobject
list, tuplearray
strstring
int, floatnumber
Truetrue
Falsefalse
Nonenull

转换为 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)

输出:

Python将json写入文件

格式化 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"
        ]
    }
]