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": "六六" }