Python基础-json处理

json骚操作

  •    json是一种所有语言中都通用的key-value数据结构的数据类型,很像python中的字典,json处理使用json模块,json模块有下面常用的方法:

1、字典转成json串了,是双引号

# python的数据类型和json互相转换的
# json就是一串字符串
import json

d = {"key1": "v1", 'k2': 'v2', 'k3': 'v3'}
print(d)  # 字典打印出来的结果
print(json.dumps(d))  # 字典转成json串了,是双引号

运行结果:

{'key1': 'v1', 'k2': 'v2', 'k3': 'v3'}
{"key1": "v1", "k2": "v2", "k3": "v3"}

2、json转成字典,用loads

import json

d = {"key1": "v1", 'k2': 'v2', 'k3': 'v3', 'name': '六六'}
# for i in range(10):#循环10次
#     d['key%s'%i] = i
json_str = json.dumps(d, indent=4, ensure_ascii=False)
print(json_str)  #  indent缩进 ,ensure_ascii=False 显示中文“六六”
dic = json.loads(json_str)  # json转成字典
print(dic)

运行结果:

{
    "key1": "v1",
    "k2": "v2",
    "k3": "v3",
    "name": "六六"
}
{'key1': 'v1', 'k2': 'v2', 'k3': 'v3', 'name': '六六'}

3、错误的json串(#网站:bejson.com校验json格式)

import json  # 网站:bejson.com校验json格式

json_str = '''
    {
    'key1': 1,   #需双引号,会报错
    "k2": "v2",
    "k3": "v3",
    "name": "六六"
}
'''
dic = json.loads(json_str)  # json转字典
print(dic)

运行结果:

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 3 column 5 (char 11)

 4、用load(相当于read),直接转字典

import json

with open('u', encoding='utf-8') as f:
    # content = f.read()
    # print(json.loads(content))  # 传json字符串再转,
    result = json.load(f)    # 用load(相当于read),直接转字典,json在文件里,直接传文件对象进来
    print(result)

运行结果:

{'key1': 1, 'k2': 'v2', 'k3': 'v3', 'name': '六六'}

5、用dump把字典转成json串写文件里

import json

d = {"key1": "v1", 'k2': 'v2', 'k3': 'v3', 'name': '六六'}
with open('u2', 'w', encoding='utf-8') as f:
    # json_str = json.dumps(d,indent=4,ensure_ascii=False)
    # f.write(json_str)
    json.dump(d, f, ensure_ascii=False, indent=4)  #用dump直接写,少些write

运行结果:

u2内容:
{
    "key1": "v1",
    "k2": "v2",
    "k3": "v3",
    "name": "六六"
}
原文地址:https://www.cnblogs.com/ccxm/p/13498300.html