1 json.dumps()
json.dumps()是將字典類型轉化成字符串類型。
import json
name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}
jsObj = json.dumps(name_emb)
print(name_emb)
print(jsObj)
2 json.dump()
json.dump()用於將dict類型的數據轉成str,並寫入到json文件中
import json
name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}
emb_filename = ('/home/cqh/faceData/emb_json.json')
# solution 1
jsObj = json.dumps(name_emb)
with open(emb_filename, "w") as f:
f.write(jsObj)
f.close()
# solution 2
json.dump(name_emb, open(emb_filename, "w"))
3 json.loads()
json.loads()將字符串類型轉化成字典類型
import json
name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}
jsDumps = json.dumps(name_emb)
jsLoads = json.loads(jsDumps)
print(name_emb)
print(jsDumps)
print(jsLoads)
4 json.load()
json.load()用於從json文件中讀取數據。
# json_load.py
strList = json.load(with open("listStr.json",mode='r'))
print strList
print strDict
# {u'city': u'\u5317\u4eac', u'name': u'\u5927\u5218'}
-
pickle常用操作參考json
-
格式要求:
- 只能包含int/ str/ list/ dict/ bool/float 不存在元組/集合
- 最外層必須是一個列表或字典
- 在json中如果有字符串,必須是雙引號"json中的字符串"
- 真假小寫true/false
-
字典或者列表中存在中文,序列化的時候或轉為UNcode格式,如果想保存中文就需要進行以下操作
v1=[1,2,3,4,'2','大牛'] val = json.dumps(v1,ensure_ascii=False) print(val) #[1, 2, 3, 4, "2", "大牛"]
-
json:優點:所有語言通用,缺點:只能序列化部分數據類型;不能連續load多次
-
pickle;可以序列化多有數據,但是序列化之后只有python識別,能連續load多次
總結: dump與json轉化時可以結合文件操作,dumps與jsons不能.