10:处理 json

Posted biubiubiu83

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()
 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)
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 文件里

 


以上是关于10:处理 json的主要内容,如果未能解决你的问题,请参考以下文章

在 Ubuntu 10.04 上安装 jq JSON 处理器

未处理的异常 Json 在 Blazor 上显示数据

通过播放框架 1.2.3 处理 JSON

ROBOT 中的 Json 处理

Ext JS 5 关于Store load返回json错误信息或异常的处理

Python 基础 - 4.10 xml处理模块