Json模块dumps、loads、dump、load函数介绍
1、json.dumps()
json.dumps()实现python类型转化为json字符串,返回一个str对象 ,把一个Python对象编码转换成Json字符串 ,如果直接将dict类型的数据写入json文件中会发生报错
从python原始类型向json类型的转化对照如下:
import json import chardet listStr = [1, 2, 3, 4] tupleStr = (1, 2, 3, 4) dictStr = {"city": "北京", "name": "大猫"} json.dumps(listStr) # '[1, 2, 3, 4]' json.dumps(tupleStr) # '[1, 2, 3, 4]' # 注意:json.dumps() 处理中文时默认使用的ascii编码,会导致中文无法正常显示 print json.dumps(dictStr) # 记住:处理中文时,添加参数 ensure_ascii=False 来禁用ascii编码 print json.dumps(dictStr, ensure_ascii=False) # {"city": "北京", "name": "大刘"} json.dumps(res, indent=2, sort_keys=True)格式化输出并按键排序
2、json.loads()
json.loads()把Json格式字符串解码转换成Python对象
从json到python的类型转化对照如下:
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) print(type(name_emb)) print(type(jsDumps)) print(type(jsLoads))
运行结果如下:
'a'变成了u'a'是因为发生了类型转换,str会转换成unicode
3、json.dump()
json.dump()用于将Python内置类型序列化为json对象后写入文件 。下面两种方法都可以将数据写入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"))
运行结果如下:
4、json.load()
json.load()用于从json文件中读取数据。
import json emb_filename = ('/home/cqh/faceData/emb_json.json') jsObj = json.load(open(emb_filename)) print(jsObj) print(type(jsObj)) for key in jsObj.keys(): print('key: %s value: %s' % (key,jsObj.get(key)))
运行结果如下: