json和字符串之间的转换,主要使用到
json
库中的json.loads()
函数json.dumps()
含函数。
所以我们首先要导入json
库。
import json
一、字符串转为json,使用 json.loads()
函数
- 首先我们新建一个字符串,考虑全面一点,里面包含中文和英文,这会涉及到后面字符串转json时候的中文编码问题。
string = """
[
{
"name": "冯振振",
"age": "23",
"job": "Python engineer",
"motto": "I like coding"
},
{
"name": "康康",
"age": "23",
"job": "web engineer",
"motto": "专业前端,不至于前端"
}
]
- 字符串转成json,只需要使用
json.loads()
函数即可,传入字符串,输出json格式
json_list = json.loads(string)
# 输入结果如下
[{'name': '冯振振', 'age': '23', 'job': 'Python engineer', 'motto': 'I like coding'}, {'name': '康康', 'age': '23', 'job': 'web engineer', 'motto': '专业前端,不至于前端'}]
- 使用
json.loads()
将字符串转换为json之后,所属的数据类型是list类型,即
二、json转字符串,使用 json.dumps()
函数,必要时需要传入ensure_ascii=False, indent=2
参数
- 我们使用上面转换得到的json格式数据,将它转换为字符串。
[{'name': '冯振振', 'age': '23', 'job': 'Python engineer', 'motto': 'I like coding'}, {'name': '康康', 'age': '23', 'job': 'web engineer', 'motto': '专业前端,不至于前端'}]
- 使用
json.dumps()
,可以将json格式转换为字符串格式。但是,如果我们的字符串中包含中文,转换后的字符串中,中文不会显示出来,只会显示中文的编码。
[{"name": "\u51af\u632f\u632f", "age": "23", "job": "Python engineer", "motto": "I like coding"}, {"name": "\u5eb7\u5eb7", "age": "23", "job": "web engineer", "motto": "\u4e13\u4e1a\u524d\u7aef\uff0c\u4e0d\u81f3\u4e8e\u524d\u7aef"}]
- 这个时候,我们可以给
json.dumps()
函数传入ensure_ascii=False
参数,即可解决这个问题。
new_string = json.dumps(json_list,ensure_ascii=False)
# 输入的结果如下
[{"name": "冯振振", "age": "23", "job": "Python engineer", "motto": "I like coding"}, {"name": "康康", "age": "23", "job": "web engineer", "motto": "专业前端,不至于前端"}]
- 这个时候我们发现,转换后的字符串全部都显示在一行上面,看上去不直观。我们可以再给
json.dumps()
函数传入indent=2
参数,设置字符串的缩进。
new_string = json.dumps(json_list,ensure_ascii=False,indent=2)
# 输出的结果如下
[
{
"name": "冯振振",
"age": "23",
"job": "Python engineer",
"motto": "I like coding"
},
{
"name": "康康",
"age": "23",
"job": "web engineer",
"motto": "专业前端,不至于前端"
}
]