目錄
json模塊提供了json格式字符串與Python中各類對象之間的轉換,最主要的就是json格式字符串與Python中字典之間的轉換。
1:獲取模塊幫助
# encoding=gbk
import json
print(json.__doc__)
print(dir(json))
for item in dir(json):
print(item)
print('*' * 60)
# 主要的4個方法
print(help(json.dump))
print(help(json.dumps))
print(help(json.load))
print(help(json.loads))
2:json模塊的主要方法
函數 | 說明 | 獲取幫助 |
dump | 把對象序列化爲json格式字符串,然後保存到文件 | print(help(json.dump)) |
dumps | 把對象序列化爲json格式字符串 | print(help(json.dumps)) |
load | 從文件讀取json格式字符串,然後反序列化爲Python對象 | print(help(json.load)) |
loads | 把json格式字符串,反序列化爲Python對象 | print(help(json.loads)) |
3:示例代碼
3.1 dumps 和 loads
Python對象與json字符串之間的轉換
# encoding=gbk
import json
print('-01--列表:---'+ '*'*60)
# 列表
v1 = [1,2,'efg',3,4,5,'abc','123']
# 列表序列化: 列表轉換爲字符串
s1 = json.dumps(v1)
print(type(s1),s1) # <class 'str'> [1, 2, "efg", 3, 4, 5, "abc", "123"]
# 反序列化: 字符串轉換爲列表
v2 = json.loads(s1)
print(type(v2),v2) # <class 'list'> [1, 2, 'efg', 3, 4, 5, 'abc', '123']
print('-02--元組:---'+ '*'*60)
# 元組
tup = (1,2,3,4,'abc')
s1 = json.dumps(tup) # <class 'str'> [1, 2, 3, 4, "abc"]
print(type(s1),s1)
v2 = json.loads(s1)
print(type(v2),v2) # <class 'list'> [1, 2, 3, 4, 'abc']
print('-03--集合:---'+ '*'*60)
# 不能是集合,序列化集合報錯。
# st = {1,2,3}
# s = json.dumps(st)
# print(type(s1),s1)
print('-04--字典:---'+ '*'*60)
dic = {123:'abc','國家':'中國'}
s1 = json.dumps(dic) #如果你的key或者value超過了ascii的範疇,就會顯示\uxxxxx
print(type(s1),s1) # <class 'str'> {"123": "abc", "\u56fd\u5bb6": "\u4e2d\u56fd"}
s2 = json.dumps(dic,ensure_ascii=False)
print(type(s2),s2) # <class 'str'> {"123": "abc", "國家": "中國"}
#
v2 = json.loads(s1)
print(type(v2),v2) # <class 'dict'> {'123': 'abc', '國家': '中國'}
3.2 dump 和 load
Python對象與文件中json字符串之間的轉換
# encoding=gbk
import json
print('-01--列表:---'+ '*'*60)
# 列表
v1 = [1,2,'efg',3,4,5,'abc','123']
# 列表序列化: 列表轉換爲字符串,存儲到文件中
f = open('list.txt',mode='w',encoding='utf-8')
json.dump(v1,f)
f.close()
# 反序列化: 文字中的字符串轉換爲列表
f = open('list.txt',mode='r',encoding='utf-8')
v2 = json.load(f)
print(type(v2),v2) # <class 'list'> [1, 2, 'efg', 3, 4, 5, 'abc', '123']
f.close()
print('-02--元組:---'+ '*'*60)
# 元組
tup = (1,2,3,4,'abc')
f = open('tup.txt',mode='w',encoding='utf-8')
json.dump(tup,f)
f.close()
f = open('tup.txt',mode='r',encoding='utf-8')
v2 = json.load(f)
f.close()
print(type(v2),v2) # <class 'list'> [1, 2, 3, 4, 'abc']
print('-03--集合:---'+ '*'*60)
# 不能是集合,序列化集合報錯。
# st = {1,2,3}
# s = json.dumps(st)
# print(type(s1),s1)
print('-04--字典:---'+ '*'*60)
dic = {123:'abc','國家':'中國'}
f = open('dict.txt',mode='w',encoding='utf-8')
json.dump(dic,f) #如果你的key或者value超過了ascii的範疇,就會顯示\uxxxxx
f.close()
f = open('dict2.txt',mode='w',encoding='utf-8')
json.dump(dic,f,ensure_ascii=False) #如果你的key或者value超過了ascii的範疇,就會顯示\uxxxxx
f.close()
f = open('dict.txt',mode='r',encoding='utf-8')
v2 = json.load(f)
f.close()
print(type(v2),v2) # <class 'dict'> {'123': 'abc', '國家': '中國'}