Python中的json转字符串
在Python中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语言并经过扩展,以键值对的方式表示数据,易于人和机器的读写。而 Python 的 json 模块则可以非常简便地转化 JSON 数据和 Python 中的数据类型。
JSON 的数据格式如下:
{
"name": "Tom",
"age": 20,
"score": {
"Chinese": 90,
"Math": 80
},
"hobby": [
"reading",
"running"
]
}
在Python中,我们可以使用json
模块将JSON格式的数据转换成Python中的数据类型,反之亦然。下面我们通过实例代码来解释如何在Python中进行json转字符串的操作。
JSON转字符串
在Python中,可以使用json.dumps()
方法将Python数据类型转换为JSON字符串。例如,如果我们有如下字典类型的数据:
import json
data = {
"name": "Tom",
"age": 20,
"score": {
"Chinese": 90,
"Math": 80
},
"hobby": [
"reading",
"running"
]
}
json_str = json.dumps(data)
print(json_str)
运行以上代码,输出结果如下:
{"name": "Tom", "age": 20, "score": {"Chinese": 90, "Math": 80}, "hobby": ["reading", "running"]}
通过 dumps()
方法我们可以将数据类型转换成 JSON 格式的字符串,结果中由于我们使用了 dumps 方法,所以自动将 key 由“字符串”转换成了“双引号字符串”。 除了默认的dumps()方式外,dumps()还有其他一些方法和参数:
import json
data = {
"name": "Tom",
"age": 20,
"score": {
"Chinese": 90,
"Math": 80
},
"hobby": [
"reading",
"running"
]
}
# indent参数用于格式化显示
json_str1 = json.dumps(data, indent=4)
print(json_str1)
# separators参数用于去除逗号之间的空格
json_str2 = json.dumps(data, separators=(",", ":"))
print(json_str2)
# sort_keys参数用于按照key值进行排序
json_str3 = json.dumps(data, sort_keys=True)
print(json_str3)
输出结果如下:
{
"name": "Tom",
"age": 20,
"score": {
"Chinese": 90,
"Math": 80
},
"hobby": [
"reading",
"running"
]
}
{"name":"Tom","age":20,"score":{"Chinese":90,"Math":80},"hobby":["reading","running"]}
{"age": 20, "hobby": ["reading", "running"], "name": "Tom", "score": {"Chinese": 90, "Math": 80}}
如上所示,indent参数用于让json的字符串具有可读性(并且它是有用的),通过该参数加上正整数,表示再生成的字符串中key-value对的个数折行;而separators参数用于去除json生成的字符串的空格,将逗号和冒号之间的空格移除。sort_keys参数用于按照key值进行排序。这些参数也可以组合使用,比如:
import json
data = {
"name": "Tom",
"age": 20,
"score": {
"Chinese": 90,
"Math": 80
},
"hobby": [
"reading",
"running"
]
}
json_str = json.dumps(data, indent=4, separators=(",", ": "), sort_keys=True)
print(json_str)
输出结果:
{
"age": 20,
"hobby": [
"reading",
"running"
],
"name": "Tom",
"score": {
"Chinese": 90,
"Math": 80
}
}
字符串转JSON
除了将Python数据类型转为JSON字符串,还可以将JSON字符串转化为Python数据类型。这里介绍两个方法:json.loads()
和json.load()
。
json.loads()
方法用于加载已经存储在字符串中的JSON数据,返回Python对象。例如,如果有如下JSON格式的字符串:
{
"name": "Tom",
"age": 20,
"score": {
"Chinese": 90,
"Math": 80
},
"hobby": [
"reading",
"running"
]
}
我们可以使用json.loads()
方法将其转换为Python数据类型:
import json
json_str = '{"name": "Tom", "age": 20, "score": {"Chinese": 90, "Math": 80}, "hobby": ["reading", "running"]}'
data = json.loads(json_str)
print(data)
运行结果:
{'name': 'Tom', 'age': 20, 'score': {'Chinese': 90, 'Math': 80}, 'hobby': ['reading', 'running']}
json.load()
方法用于从文件中读取JSON数据,返回Python对象。例如,如果有如下JSON格式的文件:
{
"name": "Tom",
"age": 20,
"score": {
"Chinese": 90,
"Math": 80
},
"hobby": [
"reading",
"running"
]
}
我们可以使用json.load()
方法将其转换为Python数据类型:
import json
with open("data.json", "r") as f:
data = json.load(f)
print(data)
以上代码将文件”data.json”中的数据读取并转化为Python数据类型,输出结果与前面的示例相同。
结论
总之,在Python中进行JSON和字符串之间的转换非常简单,通过 json.dumps()
, json.loads()
和 json.load()
方法,我们可以轻松地完成这个过程。此外,dumps()
还有其他用途,比如可以将JSON数据写入文件,这里我们就不一一赘述。希望这篇文章能够帮助到初学者,使他们更加熟悉python处理json格式数据的方法。