JSON文件的读取操作详解

python读取json字符串

python操作json文件
下面有一段json形式的字符串,它是str类型,通过python转化成可操作的数据结构

import json
str='''[{
"name":"kingsan",
"age":'23'
},
{"name":"xiaolan",
"age":'23'
}]
'''
print(type(str))
data = json.loads(str)
print(data)
print(type(data))

这里使用loads()方法,将字符串转化为JSON对象
那么,如何获取对应的内容呢


    data[0].get('name')
    data[0]['name']
#索引0表示得到第一个字典元素,name表示第一个字典的key,也即是json的属性,
我们一般使用第一种方法,第一种方法获取不到会返回None.

##这里说个重点,JSON数据需要用双引号来包围,不能使用单引号,不然易出现解析错误

从JSON文本文件读取内容

import json
with open('data.json','r') as file:
    str = file.read()
    data = json.loads(str)
    print(data)

把文件的内容结构化输出

输出json

improt json
data = [{
'name':'kingsan'
'age':'23'
}]

with open('data.json','w') as file:
	file.write(json.dumps(data))

dumps()方法将json对象转为字符串,然后调用文件的写方法,写入,这种写入没有格式,可以就加入参数indent,存储为json格式

improt json
data = [{
'name':'kingsan'
'age':'23'
}]

with open('data.json','w') as file:
	file.write(json.dumps(data,indent=2))

这样得到的内容会有缩进,会更清晰。

json里面写入中文

improt json
data = [{
'name':'大哥'
'age':'23'
}]

with open('data.json','w') as file:
	file.write(json.dumps(data,indent=2))

这里得道德大哥,会是一个Unicode字符串,并不是我想要的。那么就需要指定参数ensure_ascii为False

improt json
data = [{
'name':'大哥'
'age':'23'
}]

with open('data.json','w',encoding='utf-8') as file:
	file.write(json.dumps(data,indent=2,ensure_ascii=False))

这样就能输出中文了。

你可能感兴趣的:(python基础)