简介
Python 中自带了JSON模块,直接import json就可以使用了
json语法
空值/布尔值/数值/字符串/数组
对象
{
"name": "John",
"age": 30,
"city": "New York"
}
综合写法
{
"name": "John",
"age": 30,
"cities": ["New York", "London"],
"isStude
nt": false,
"address": {
"street": "123 Main St",
"city": "San Francisco"
},
"scores": {
"math": 90,
"english": 85,
"science": 95
},
"isNullValue": null
}
编码问题
json.loads()传入的字符串的编码不是UTF-8的话,需要指定字符编码的参数
json.loads(jsonStr, encoding="GBK");
如果 dataJsonStr通过encoding指定了合适的编码,但是其中又包含了其他编码的字符,
则需要先将dataJsonStr转换为Unicode,然后再指定编码格式调用json.loads()
dataJsonStrUni = dataJsonStr.decode("GB2312");
dataDict = json.loads(dataJsonStrUni, encoding="GB2312");
json.loads()
作用:将Json字符串解码为Python类型
jsonStr = '{"city": "北京", "name": "范爷"}'
dictStr=json.loads(jsonStr)
json.load()
作用:读取文件中json形式的字符串元素,转化成python类型
strList = json.load(open("listStr.json"))
strDict = json.load(open("dictStr.json"))
编码问题
json.dump()/json.dumps()默认使用ascii编码,需要添加参数 ensure_ascii=False来禁用ascii编码【按utf-8编码】
json.dumps()
作用:将python类型转化为json字符串,返回一个str对象
dictStr = {"city": "北京", "name": "范爷"} # dict
jsonStr = json.dumps(dictStr, ensure_ascii=False) # str
json.dump()
作用:将Python类型序列化为json对象,并写入文件
dictStr = {"city": "北京", "name": "范爷"}
json.dump(dictStr, open("dictStr.json", "w"), ensure_ascii=False)