2022年 11月 5日

python中json的使用

json模块

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。Python 中可以使用 json 模块来对 JSON 数据进行编解码,它主要提供了四个方法: dumpsdumploadsload

1. json.loads:字符串(标准json格式)转换成 dict list:

import json

data = '[{"name":"张三","age":20},{"name":"李四","age":19},{"name":"小文","age":21}]'
list_data = json.loads(data)

print(data)
print(type(data))  # 字符串

print(list_data)
print(type(list_data)) # 字典列表
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2. json.dumps:dict list转换为json字符串

data_list = [{"name":"张三","age":20},{"name":"李四","age":19},{"name":"小文","age":21}]

data_json = json.dumps(data_list)  

print(data_json)
print(type(data_json)) # 字符串
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意:json.dumps 序列化时默认使用的ascii编码,想输出真正的中文需要指定 ensure_ascii=False(适用于python3)

data_json = json.dumps(data_list, ensure_ascii=False) 
  • 1

python2中可以用以下方法:

from __future__ import unicode_literals 

data_json = json.dumps(data_list, ensure_ascii=False) 
  • 1
  • 2
  • 3

3. json.dump:dict list写入json文件

方法一:传统方法,先将dict list转化为字符串,然后写入文件

data_list = [{"name":"张三","age":20},{"name":"李四","age":19},{"name":"小文","age":21}]
data_str = json.dumps(data_list,ensure_ascii=False)

with open('data.json','w') as f:
    f.write(data_str)
  • 1
  • 2
  • 3
  • 4
  • 5

方法二:直接使用json.dump,将dict list写入json文件

data_list = [{"name":"张三","age":20},{"name":"李四","age":19},{"name":"小文","age":21}]

fp = open('data_json.json','w')
json.dump(data_list,fp,ensure_ascii=False) # 直接将字典列表写入到文件
fp.close()
  • 1
  • 2
  • 3
  • 4
  • 5

4. json.load:读取json文件 转换为 dict list

result = json.load(open('data_json.json','r'))

print(result)
print(type(result)) # 字典列表
  • 1
  • 2
  • 3
  • 4