10:处理 json

json 通用的数据类型, 所有的语言都认识。json 是字符串。key-value 必须使用双引号
1. loads() 和 dumps() 的使用
  • json.loads() 将 json 字符串转换成字典。
  • json.dumps() 将字典转换成 json 字符串。
 1 s = '''{
 2     "error_code":0,
 3     "stu_info":[
 4         {
 5             "id":100,
 6             "name":"小明"
 7         },
 8         {
 9             "id":202,
10             "name":"小黑"
11         }
12         ]
13 }
14 '''
15 # json格式校验网址 www.bejson,com
16 import json
17 res = json.loads(s) # json 字符串转成字典
18 print(res)
19 print(type(res))
20 
21 stus = {'test1':'123', 'test2':'456', '中文':'中文test'}
22 res2 = json.dumps(stus, ensure_ascii=False) # 字典转成 json. 如果有中文,设置ensure_ascii=False
23 print(res2)
24 print(type(res2))
25 res3 = json.dumps(stus, indent=4) # indent 设置缩进
26 print(res3)
1 # 输出结果:
2 {'error_code': 0, 'stu_info': [{'id': 100, 'name': '小明'}, {'id': 202, 'name': '小黑'}]}
3 <class 'dict'>
4 {"test1": "123", "test2": "456"}
5 <class 'str'>

 

在处理 MD5 加密的时候经常需要使用 json.dumps() 方法将字典转换成 json 字符串。上面的运行结果可以看到转换成 json 时冒号后面有个空格,这会导致加密结果不一致。所以在转换的时候需要加个参数 separators=(',',':'),代码如下:

1 res2 = json.dumps(stus, separators=(',',':'),ensure_ascii=False) # 字典转成 json. 如果有中文,设置ensure_ascii=False
2 print(res2)
3 
4 #输出结果:
5 {"test1":"123","test2":"456","中文":"中文test"}

2. json.loads() 、json.load() 的区别

 1 # load 和 loads 的区别:
 2 # loads 传的是个字符串
 3 f = open('stus.json', encoding='utf-8')
 4 content = f.read() # read()获取的是一个字符串对象
 5 user_dic = json.loads(content) # 使用字符串作为参数
 6 print(user_dic)
 7 
 8 # load  传的是个文件对象
 9 f = open('stus.json', encoding='utf-8')
10 user_dic = json.load(f) #直接使用文件对象 f 作为参数
11 print(user_dic)

3. json.dumps()、json.dump() 的区别

1 # dump 和 dumps 的区别:
2 # 如果要把字典写进文件里,那么使用 dump
3 f = open('stus2.json', encoding='utf-8')
4 json.dump(stus, f, ensure_ascii=False) # 直接把 stus 写进了 stus2.json 文件里

 

posted @ 2018-09-23 20:50  biubiubiu83  Views(178)  Comments(0Edit  收藏  举报