json.load(), json.loads(), json.dump(), json.dumps()各自的作用和区别详解

1. json.loads():将 JSON 格式的字符串解析为 Python 对象。

示例:

import json

json_str = '{"name": "Alice", "age": 30}'
data = json.loads(json_str)
print(data)  # 输出:{'name': 'Alice', 'age': 30}

2. json.dumps():将 Python 对象转换为 JSON 格式的字符串。

示例:

import json

data = {"name": "Alice", "age": 30}
json_str = json.dumps(data)
print(json_str)  # 输出:{"name": "Alice", "age": 30}

3. json.dump():将 Python 对象转储为 JSON 格式的字符串并写入文件。

import json

data = {"name": "Alice", "age": 30}
with open('data.json', 'w') as f:
    json.dump(data, f)

4. json.load():从文件中加载 JSON 数据并解析为 Python 对象。

import json

with open('data.json', 'r') as f:
    data = json.load(f)
print(data)  # 输出:{'name': 'Alice', 'age': 30}

 

记忆技巧:

  • json.loads() 中的 s 表示 "string",表示它接收一个 JSON 格式的字符串作为参数进行加载。
  • json.dump() 中的 p 表示 "Python",表示它接收一个 Python 对象作为参数进行转储。

 

5. json.dump()和json.dumps()有何区别? 同样json.load()和json.loads()又有何区别呢?

当处理文件时,使用 json.dump()json.load()

例如:

import json

# 写入 JSON 数据到文件
data = {"name": "John", "age": 30, "city": "New York"}
with open("data.json", "w") as file:
    json.dump(data, file)

# 从文件中读取 JSON 数据
with open("data.json", "r") as file:
    loaded_data = json.load(file)

print(loaded_data)  # 输出: {'name': 'John', 'age': 30, 'city': 'New York'}

当处理字符串时,使用 json.dumps()json.loads()

例如:

import json

# 将 Python 对象转换为 JSON 字符串
data = {"name": "John", "age": 30, "city": "New York"}
json_string = json.dumps(data)

# 将 JSON 字符串转换为 Python 对象
loaded_data = json.loads(json_string)

print(loaded_data)  # 输出: {'name': 'John', 'age': 30, 'city': 'New York'}

这样做的好处是,dump()load() 可以直接与文件交互,而 dumps()loads() 则更适用于在内存中处理数据。

json.dump()json.dumps() 的区别在于它们处理的数据来源不同

  • json.dump() 将 Python 对象转储为 JSON 格式的字符串,并写入文件中。
  • json.dumps() 将 Python 对象转换为 JSON 格式的字符串,但是不进行文件写入操作。

同样,json.load()json.loads() 的区别在于它们处理的数据来源也不同

  • json.load() 从文件中加载 JSON 数据并解析为 Python 对象。
  • json.loads() 将 JSON 格式的字符串解析为 Python 对象。

简而言之,dump()load() 操作文件,而 dumps()loads() 则不操作文件,它们只是处理字符串和对象之间的转换。

 

posted @ 2024-02-20 16:54  AlphaGeek  阅读(168)  评论(0)    收藏  举报