📜  使用Python读取、写入和解析 JSON

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

使用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 看起来像这样。

pyhton-append-json1

我们要读取这个文件的内容。下面是实现。

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()

输出:

python-read-json-output1

在这里,我们使用了 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 的等效转换:

PythonJSON Equivalent
dictobject
list, tuplearray
strstring
int, floatnumber
Truetrue
Falsefalse
Nonenull

将 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)

输出:

python-json-写入文件

上面的程序使用 'w' 以写模式打开一个名为 sample.json 的文件。如果文件不存在,将创建该文件。 Json.dump() 会将字典转换为 JSON字符串,并将其保存在文件 sample.json 中。