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)
- obj:就是你要转化成json的对象。
- skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型。(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key 。
- ensure_ascii=True:默认输出ASCLL码,如果把这个该成False,就可以输出中文。
- check_circular:如果check_circular为false,则跳过对容器类型的循环引用检查,循环引用将导致溢出错误(或更糟的情况)。
- allow_nan:如果allow_nan为假,则ValueError将序列化超出范围的浮点值(nan、inf、-inf),严格遵守JSON规范,而不是使用JavaScript等价值(nan、Infinity、-Infinity)。
- indent:参数根据数据格式缩进显示,读起来更加清晰。
- separators:是分隔符的意思,参数意思分别为不同dict项之间的分隔符和dict项内key和value之间的分隔符,把:和,后面的空格都除去了。
- default:default(obj)是一个函数,它应该返回一个可序列化的obj版本或引发类型错误。默认值只会引发类型错误。
- 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)
- s: 这是一个必需的参数,表示需要解析的 JSON 格式的字符串。
- cls: 这是一个可选的参数,用于指定一个自定义的 JSON 解码器类。这个类应该是 json.JSONDecoder 的一个子类。
- object_hook: 这是一个可选的参数,用于指定一个自定义的函数,该函数将在解析 JSON 对象时被调用。该函数接收一个 JSON 对象(作为 Python 字典)作为输入,并应返回一个对象,该对象将被包含在最终的解析结果中。
- parse_float, parse_int, parse_constant: 这些是可选的参数,用于指定自定义的函数,这些函数将在解析 JSON 数据中的浮点数、整数和常量值时被调用。
- object_pairs_hook: 这是一个可选的参数,用于指定一个自定义的函数,该函数将在解析 JSON 对象中的键值对时被调用。该函数接收一个包含键和值的元组作为输入,并应返回一个对象,该对象将被包含在最终的解析结果中。
- **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博客](
标签:None,python,json,dumps,Python,JSON,数据处理 From: https://www.cnblogs.com/joudys/p/17697142.html