json.dumps()实现python类型转化为json字符串,返回一个str对象 ,把一个Python对象编码转换成Json字符串 ,若是直接将dict类型的数据写入json文件中会发生报错python
从python原始类型向json类型的转化对照以下: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)格式化输出并按键排序
二、json.loads()编码
json.loads()把Json格式字符串解码转换成Python对象code
从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))
运行结果以下:blog
'a'变成了u'a'是由于发生了类型转换,str会转换成unicode排序
json.dump()用于将Python内置类型序列化为json对象后写入文件 。下面两种方法均可以将数据写入json文件ci
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"))
运行结果以下:unicode
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)))
运行结果以下: