爬虫的过程中我们经常需要json和python字符串之间进行转换,在这里我们先来简单说一下json四个函数的作用。
1. json.loads()
把Json格式字符串解码转换成Python对象 从json到python的类型转化对照如下:
json数据自动按Unicode存储
uDict= "{\"city\": \"\u4e0a\u6d77\", \"name\": \"\u9ad8\u6821\"}"
strDict=json.loads(uDict)
print(strDict)
结果:'{"city": "上海", "name": "高校"}'
2. json.dumps()
实现python类型转化为json字符串,返回一个str对象 把一个Python对象编码转换成
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)格式化输出并按键排序。
3. json.dump()
将Python内置类型序列化为json对象后写入文件
json_dump.py
listStr = [{“city”: “北京”}, {“name”: “大刘”}]
dictStr = {“city”: “北京”, “name”: “大刘”}
json.dump(dictStr,open(“dic.json”,”w”), ensure_ascii=False,indet=4)
4. json.load()
读取文件中json形式的字符串元素 转化成python类型