一、JSON大致简介
- JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。
- JSON 是存储和交换文本信息的语法。类似 XML。
- JSON 比 XML 更小、更快,更易解析。
- JSON和XML两种格式的语言都是垮语言、跨平台的。 跨语言:c、c++、java、python、php、go等等都可以处理 跨平台:Windows、Linux、Unix
- json更为清晰且冗余更少,更轻量级,传输效率更高
- xml常常导致复杂的代码,极低的开发效率
- 对于大多数web应用来说,根本不需要复杂的XML来传输数据
二、代码演练
import json
# JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。
# 在json的编解码过程中,python 的原始类型与json类型会相互转换
'''Python 编码为 JSON 类型转换对应表'''
# Python JSON
# dict object
# list, tuple array
# str string
# int, float, int- & float-derived Enums number
# True true
# False false
# None null
'''JSON 解码为 Python 类型转换对应表'''
# JSON Python
# object dict
# array list
# string str
# number(int) int
# number(real) float
# true True
# false False
# null None
class TestPythonJson:
data = {'name': '啦啦', 'age': 21, 'sex': '男', 'wight': 62.5, 'height': 177, 'girlfriend': None}
def test_dumps_python_to_json(self):
'''
python中的dict类型数据编码成json格式数据,json.dumps(): 对数据进行编码。
:return:data_dict_to_json:python中dict类型的数据编码成json格式数据
'''
data_dict_to_json = json.dumps(self.data, ensure_ascii=False)
return data_dict_to_json
def test_loads_json_to_python(self, data_dict_to_json):
'''
json格式数据解码成python中的dict类型数据,json.loads(): 对数据进行解码。
:param data_dict_to_json: json格式的数据
:return:
'''
data_json_to_dict = json.loads(data_dict_to_json)
print(f'原始数据——json格式data_dict_to_json{data_dict_to_json}\njson格式数据解码成dict格式后为:{data_json_to_dict}\n'
f'数据类型为:{type(data_json_to_dict)}\n')
def test_dump_python_to_json(self, data):
'''
如果要处理的是json文件可以使用json.dump()来对python中的dict类型数据进行编码,生成json格式的数据,保存到文件中
:param data: python中的dict类型数据
:return:
'''
with open('data.json', mode='w', encoding='utf-8') as file:
# 如果ensure_ascii是true(即默认值),输出保证将所有输入的非ASCII字符转义.
# 如果 ensure_ascii 是 false,这些字符会原样输出。
json.dump(data, file, ensure_ascii=False)
def test_load_json_to_python(self):
'''
如果要处理的是json文件可以使用json.load()来对json格式的文件中的数据进行解码,生成python中的dict类型的数据
:return:
'''
with open('data.json', mode='r', encoding='utf-8') as file:
data_python = json.load(file)
print(f'通过load()方法读取json文件中的数据并转换成python中的dict类型的数据为:{data_python}')
if __name__ == '__main__':
# 创建类的实例对象
test_python_json = TestPythonJson()
# 调用test_dumps_python_to_json()方法对python中的dict类型数据编码成json格式数据
print(f"原始数据python中的data{test_python_json.data}\ndict格式转换成json格式后为:{test_python_json.test_dumps_python_to_json()}"
f"\n类型为:{type(test_python_json.test_dumps_python_to_json())}\n")
# 调用test_loads_json_to_python()方法将json格式数据解码成python中的dict类型数据
test_python_json.test_loads_json_to_python(test_python_json.test_dumps_python_to_json())
# 调用test_dump_python_to_json()方法将python中的dict类型数据进行编码,生成json格式的数据,保存到文件data.json中
test_python_json.test_dump_python_to_json(test_python_json.data)
# 调用test_load_json_to_python()将json格式的文件中的数据进行解码,生成python中的dict类型的数据
test_python_json.test_load_json_to_python()
三、关于JSON其他相关拓展知识参见官方文档(点我)