json模块详解

Json

简介
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
}

转为python数据




编码问题
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数据

编码问题
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)       

你可能感兴趣的:(Python,json)