Python笔记之json字符串相互转换

json和字符串之间的转换,主要使用到json库中的json.loads()函数json.dumps()含函数。
所以我们首先要导入json库。

1
import json

一、字符串转为json,使用 json.loads() 函数

  • 首先我们新建一个字符串,考虑全面一点,里面包含中文和英文,这会涉及到后面字符串转json时候的中文编码问题。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string = """
[
{
"name": "冯振振",
"age": "23",
"job": "Python engineer",
"motto": "I like coding"
},
{
"name": "康康",
"age": "23",
"job": "web engineer",
"motto": "专业前端,不至于前端"
}
]
  • 字符串转成json,只需要使用json.loads()函数即可,传入字符串,输出json格式
1
2
3
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格式数据,将它转换为字符串。
1
[{'name': '冯振振', 'age': '23', 'job': 'Python engineer', 'motto': 'I like coding'}, {'name': '康康', 'age': '23', 'job': 'web engineer', 'motto': '专业前端,不至于前端'}]
  • 使用json.dumps(),可以将json格式转换为字符串格式。但是,如果我们的字符串中包含中文,转换后的字符串中,中文不会显示出来,只会显示中文的编码。
1
[{"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参数,即可解决这个问题。
1
2
3
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参数,设置字符串的缩进。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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": "专业前端,不至于前端"
}
]
--------------------本文结束,感谢您的阅读--------------------