Python-JSON应用json库
- JSON的含义
- Python中的json库
- JSON数据类型
- JSON字符串
- JSON库方法
-
- JSON字符串转换为Python对象
-
- json.load
- json.loads
- Python对象转换为JSON字符串
-
- json.dump
- json.dumps
JSON的含义
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。
- 它独立于编程语言。
- JSON用来存储和交换文本信息,在网络使用中,它比xml更小/更快/更易解析,易于读写。
- 具有自我描述性,更易懂。
- Python中处理json数据的有很多库,json库较为常用。
- 使用JSON字符串生成Python对象(load, loads方法)。
- 由Python对象格式化为JSON字符串(dump, dumps方法)。
JSON的数据类型有很多,与Python互转存在一定的对应关系。
Python | JSON | JSON举例 |
---|---|---|
dict | object | {“employee”:{ “name”:“Bill Gates”, “age”:62, “city”:“Seattle” }} |
list,tuple | array, | [ “Bill”, “Steve”, “David” ] |
str | string | “Bill” |
int, long, float | number | 3.14 |
True | true | |
False | false | |
None | null |
- JSON字符串是由双引号括起来的,当由Python对象转化为JSON字符串时,它本质上还是字符串。
#
import json
dict1 = {
"name": "Bill",
"age": 35,
"married": True,
"children": ("Jennifer", "Rory"),
"car": ["Benz", "Audi"]
}
print(dict1)
print(json.dumps(dict1))
print("-------------------")
print(json.dumps(dict1, indent=4))#按照4个空格的缩进进行格式化
print(type(json.dumps(dict1, indent=4)))result:
# 可以看到在字典里,所有的字符串类型都是单引号。True首字母大写。
{'name': 'Bill', 'age': 35, 'married': True, 'children': ('Jennifer', 'Rory'), 'car': ['Benz', 'Audi']}
{"name": "Bill", "age": 35, "married": true, "children": ["Jennifer", "Rory"], "car": ["Benz", "Audi"]}
-------------------
{
"name": "Bill",
"age": 35,
"married": true,# True变成了true
"children": [
"Jennifer",
"Rory"
],
"car": [
"Benz",
"Audi"
]
}
# 还是字符串,只不过print打印出来不带双引号,在命令行里可以看到带有双引号。
json.dumps([1, 2, 3])
result:
'[1, 2, 3]'json.dumps('abc')
result:
'"abc"'json.dumps(True)
result:
'true'
JSON库方法 JSON字符串转换为Python对象 json.load
- json.load(fp),fp是文件对象。
- 把一个JSON数据类型的文档内容转化为Python对象。
# data.txt中内容:
# {"name": "Bill","married": true, "children": ["Jennifer", "Rory"]}import json
file_name = "data.txt"
msg = json.load(open(file_name))
print(type(msg), msg)result:
{'name': 'Bill', 'married': True, 'children': ['Jennifer', 'Rory']}
json.loads
- json.loads(str),str是JSON字符串。
- 把一个JSON字符串内容转化为Python对象。
import json
data = 'https://www.it610.com/article/{"name": "Bill","married": true, "children": ["Jennifer", "Rory"]}'# JSON字符串
msg = json.loads(data)
print(type(msg), msg)result:
{'name': 'Bill', 'married': True, 'children': ['Jennifer', 'Rory']}
import json
data = 'https://www.it610.com/article/["a", "b", 2, true]'
msg = json.loads(data)
print(type(msg), msg)result:
['a', 'b', 2, True]
Python对象转换为JSON字符串 json.dump
- 将Python对象转换成 JSON类型存储于文件中。
- json.dump(fp, indent=None, separators=None, sort_keys=False)
- fp为文件对象。
- indent为输出格式缩进字符数。
- separators为输出格式的指示字符。
- sort_keys,是否按照key排序。
import json
dict1 = {'name': 'Bill', 'married': True, 'children': ['Jennifer', 'Rory']}
js_str = json.dump(dict1, open("data.txt", "w"), indent=4)
msg = json.load(open("data.txt", "r"))#转换为Python对象
print(msg)result:
{'name': 'Bill', 'married': True, 'children': ['Jennifer', 'Rory']}
json.dumps
- json.dumps(Python object) 用于将 Python 对象转换成 JSON 字符串。
import json
list1 = [1, 2, "a", True]
js_str = json.dumps(list1)
print(type(js_str), js_str)result:
[1, 2, "a", true]
import json
dict1 = {'name': 'Bill', 'married': True, 'children': ['Jennifer', 'Rory']}
js_str = json.dumps(dict1, indent=4, separators=(':: ', '== '))
print(type(js_str), js_str)result:
{
"name"== "Bill"::
"married"== true::
"children"== [
"Jennifer"::
"Rory"
]
}
推荐阅读
- LeetCode|117. Populating Next Right Pointers in Each Node II刷题笔记
- Python中的Web爬虫和NLP
- 适用于初学者的Python Seaborn教程
- 使用Python的扑克概率和统计
- 使用Python进行时间序列分析的教程
- Scikit-Learn教程(棒球分析(2))
- Scikit-Learn教程(Python与机器学习)
- Scikit-Learn教程(棒球分析(1))
- Python中的推荐系统(入门教程)