python中JSON数据处理

python和json数据类型对应关系

Python JSON
dictionary object
list array
string string
int,float number
boolean(True,False) boolean(true,false)
None null

需要注意的是,Python支持一些JSON不支持的数据类型,如元组(tuple)、集合(set)和字节串(bytes)。因此,在将Python对象序列化为JSON或将JSON反序列化为Python对象时,需要特别注意这些数据类型的不兼容性。

json库常用函数

函数 作用
json.dumps() 将python对象编码成Json格式的字符串
json.loads() 将Json格式的字符串解码成python对象
json.dump() 将python中的对象转化成json储存到文件中
json.load() 将文件中的json的格式转化成python对象提取出来

json.dump()和json.dumps()的区别

json.dumps()函数用于将Python对象编码成JSON格式的字符串。
json.dump()函数用于将Python对象编码成JSON格式并将其写入文件。

json.dumps()用法:

json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

  1. obj:就是你要转化成json的对象。
  2. skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型。(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key 。
  3. ensure_ascii=True:默认输出ASCLL码,如果把这个该成False,就可以输出中文。
  4. check_circular:如果check_circular为false,则跳过对容器类型的循环引用检查,循环引用将导致溢出错误(或更糟的情况)。
  5. allow_nan:如果allow_nan为假,则ValueError将序列化超出范围的浮点值(nan、inf、-inf),严格遵守JSON规范,而不是使用JavaScript等价值(nan、Infinity、-Infinity)。
  6. indent:参数根据数据格式缩进显示,读起来更加清晰。
  7. separators:是分隔符的意思,参数意思分别为不同dict项之间的分隔符和dict项内key和value之间的分隔符,把:和,后面的空格都除去了。
  8. default:default(obj)是一个函数,它应该返回一个可序列化的obj版本或引发类型错误。默认值只会引发类型错误。
  9. sort_keys =True:是告诉编码器按照字典排序(a到z)输出。如果是字典类型的python对象,就把关键字按照字典排序。

示例:

data = {'name': 'John', 'age': 30}
json_str = json.dumps(data)
print(json_str) #{"name": "John", "age": 30}

json.dumps()将Python字典data编码成JSON格式的字符串,并将其存储在变量json_str中。如果遇到python对象有中文时,需要设置ensure_ascii的值,ensure_ascii=True:默认输出ASCLL码,如果把这个该成False,就可以输出中文。

json.dump()用法:

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

参数解析见json.dumps()

示例:

data = {'name': '张三', 'age': 30}
filename = 'text.txt'
with open(filename, 'w') as f:
    json.dump(obj=data, fp=f)

该代码执行后,会在同级目录下生成text.txt文件,json.dump()将Python字典data编码成JSON格式,并将其写入文件text.txt中。

json.loads()和json.load()的区别

json.loads()方法用于解析JSON格式的字符串。它接受一个字符串作为参数,并返回一个Python对象。
json.load()方法用于读取和解析文件对象中的JSON数据。它接受一个文件对象作为参数,并返回一个Python对象,如字典或列表。

json.loads()用法:

json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

  1. s: 这是一个必需的参数,表示需要解析的 JSON 格式的字符串。
  2. cls: 这是一个可选的参数,用于指定一个自定义的 JSON 解码器类。这个类应该是 json.JSONDecoder 的一个子类。
  3. object_hook: 这是一个可选的参数,用于指定一个自定义的函数,该函数将在解析 JSON 对象时被调用。该函数接收一个 JSON 对象(作为 Python 字典)作为输入,并应返回一个对象,该对象将被包含在最终的解析结果中。
  4. parse_float, parse_int, parse_constant: 这些是可选的参数,用于指定自定义的函数,这些函数将在解析 JSON 数据中的浮点数、整数和常量值时被调用。
  5. object_pairs_hook: 这是一个可选的参数,用于指定一个自定义的函数,该函数将在解析 JSON 对象中的键值对时被调用。该函数接收一个包含键和值的元组作为输入,并应返回一个对象,该对象将被包含在最终的解析结果中。
  6. **kw: 这是一个可选的参数,用于指定一个额外的关键字参数字典,这些参数将被传递给底层的解析函数。

示例:

data = {'name': '张三', 'age': 30}
# 用dumps将python编码成json字符串
json_str = json.dumps(data)
print(json_str) #{"name": "\u5f20\u4e09", "age": 30}

# 用dumps将python编码成json字符串
print(json.loads(json_str))#{'name': '张三', 'age': 30}

json_string是一个包含JSON数据的字符串,json.loads(json_string)会解析字符串并将其转换为Python字典。

json.load()用法:

load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

参数解析见json.loads()

示例:

filename = 'text.txt'
with open(filename, 'r') as f:
    data = json.load(f)
print(data) #{'name': '张三', 'age': 30}

data.json是一个包含JSON数据的文件,json.load(f)会读取文件的内容并将其解析为Python对象。

参考文章:

[python的JSON用法——dumps的各种参数用法(详细)_json.dump_爱吃草莓蛋糕的猴的博客-CSDN博客](

posted @   joudys  阅读(292)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示