Python JSON

Python JSON

本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象。

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。

JSON 函数

使用 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)

 

 




 

 

posted @ 2019-12-14 22:00  Crush999  阅读(190)  评论(0编辑  收藏  举报