Python Json

Json模块提供了四个方法: dumps、dump、loads、load

dump && load

dump、load主要用来读写Json文件

# Writing JSON data
with open('data.json', 'w') as f:
    json.dump(data, f)

# Reading data back
with open('data.json', 'r') as f:
    data = json.load(f)

dumps && loads

dumps、loads主要用来处理字符串和字典

  • dumps 将 Python数据(字典、字符串) 转换成 Json(字符串)
  • loads 将 Json(字符串) 转换成 字典
data = {
    'name': 'ACME',
    'shares': 100,
    'price': 542.23
}

dumps

json_str = json.dumps(data)
print('type : ', type(json_str), 'value : ', json_str)
# type :  <class 'str'> value :  {"name": "ACME", "shares": 100, "price": 542.23}

排序

# 按照字典key排序
print(json.dumps(data, sort_keys=True))
{"name": "ACME", "price": 542.23, "shares": 100}

缩进显示

# indent参数根据数据格式缩进显示
print(json.dumps(data, sort_keys=True, indent=4))
{
    "name": "ACME",
    "price": 542.23,
    "shares": 100
}

separators

# 作用是去掉‘,’ ‘:’后面的空格,加密json字符串用的比较多
print(json.dumps(data, separators=(',', ':')))
{"name":"ACME","shares":100,"price":542.23}

ensure_ascii

# 输出中文
print(json.dumps('益达'))
print(json.dumps('益达', ensure_ascii=False))
"\u76ca\u8fbe"
"益达"

loads

new_data = json.loads(json_str)
print('type : ', type(new_data), 'value : ', new_data)
# type :  <class 'dict'> value :  {'name': 'ACME', 'shares': 100, 'price': 542.23}

loads 单引号数据

data = "{'name': 'ACME', 'age': 0, 'shares': hahaha}"
data = json.dumps(data)    # 注释后print会报错
print(json.loads(data)) 

格式化打印Json数据

from pprint import pprint

posted @ 2020-03-12 11:28  sfdevs  阅读(134)  评论(0)    收藏  举报