本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。
使用 JSON 函数需要导入 json 库:import json。
json库有几个方法,分别是 dump、dumps、load、loads。
其中 dump和 dumps是用来把把字典和数组转换为 json格式的,dump把转换结果直接写入文件,dumps返回字符串。
load和 loads是把 json格式的数据转换为字典格式,load直接从 json文件中读取数据并返回字典对象,loads把字符串形式的 json数据转换成字典格式。
下面讲讲这些方法的具体用法。
1、dump和 dumps
dump的函数原型是 dump(obj, fp)
第一个参数 obj是要转换的对象,第二个参数 fp是要写入数据的文件对象。
dumps的函数原型是 dumps(obj)
参数是要转换的对象
注意:如果要转换的对象里有中文字符的话,要把 ensure_ascii设置为 False否则中文会被编码为 ascii格式
#-*- coding: utf-8 -* import json test = { "key1": "value1", "key2": [1,2,"value2"], "key3": { "key31": "value1", "key32": [1,2,"value2"], "key33": True, "key34": "测试", }, } #没有设置 ensure_ascii为 False with open(‘test.json‘, ‘w‘, encoding=‘utf-8‘) as fp: json.dump(test, fp) #设置了 ensure_ascii为 False with open(‘test_no_ascii.json‘, ‘w‘, encoding=‘utf-8‘) as fp: json.dump(test, fp, ensure_ascii=False) #test.json的文件内容为: #{... ... "key33": true, "key34": "\u6d4b\u8bd5"}} #test_no_ascii.json的文件内容为: #{... ... "key33": true, "key34": "测试"}} #注意到 python中的 True转换成了 Javascript里的 true #另外在打开文件的时候强烈建议用 encoding指定文件编码 #还需要注意文件的打开模式 w是写入,文件已存在的话就覆盖 #要追加写入的话记得用 a模式打开
2、load和 loads
load的函数原型是 load(fp)
参数 fp是要读取的文件对象
loads的函数原型是 loads(string)
参数 string是要转换成 python对象的 json字符串,通常用来将网页中的 json数据转换为 python对象
#-*- coding: utf-8 -* import json #json格式的字符串 test_string = ‘{"key1": "value1", "key2": [1, 2, "value2"], "key3": {"key31": "value1", "key32": [1, 2, "value2"], "key33": true, "key34": "测试"}}‘ #从之前保存的 test_no_ascii.json中读取 注意模式为 r with open(‘test_no_ascii.json‘, ‘r‘, encoding=‘utf-8‘) as fp: json_obj_from_file = json.load(fp) json_obj_from_web = json.loads(test_string) #打印两个返回结果的类型 print(type(json_obj_from_file)) print(type(json_obj_from_web)) #打印两个返回结果的内容 print(json_obj_from_file) print(json_obj_from_web)
原文:https://www.cnblogs.com/Crush999/p/12041147.html