当前位置:   article > 正文

python中json用法详解_python json

python json

1、json.dumps()、json.dump()、json.loads()和json.dumps()的区别:

  • json.dumps()用于将字典形式的数据转化为字符串
  • json.loads()用于将字符串形式的数据转化为字典

详见博文:json.dumps()、json.dump()、json.loads()和json.dumps()的区别_IT之一小佬的博客-CSDN博客

代码如下:

  1. import json
  2. dict1 = {'A': 'a', 'B': 'b', 'C': 'c'}
  3. print(type(dict1))
  4. print(dict1)
  5. # python编码为json类型,json.dumps()
  6. en_json = json.dumps(dict1)
  7. print(type(en_json))
  8. print(en_json)
  9. # json解码为python类型, json.loads()
  10. de_json = json.loads(en_json)
  11. print(type(de_json))
  12. print(de_json)
  13. # eval()解析json
  14. dict2 = {'X': 'x', 'Y': 'y', 'Z': 'z'}
  15. en_json = json.dumps(dict2)
  16. de_json = eval(en_json)
  17. print(type(de_json))
  18. print(de_json)

运行结果:

  1. <class 'dict'>
  2. {'A': 'a', 'B': 'b', 'C': 'c'}
  3. <class 'str'>
  4. {"A": "a", "B": "b", "C": "c"}
  5. <class 'dict'>
  6. {'A': 'a', 'B': 'b', 'C': 'c'}
  7. <class 'dict'>
  8. {'X': 'x', 'Y': 'y', 'Z': 'z'}

2、处理request请求返回的json数据:

有2种方法可以处理request返回的数据:

1.对request发起请求返回的响应对象进行.json()操作,.json操作返回的是一个字典类型(如果返回的结果为空时则会报错),如下:

2.对request请求得到的响应对象中的text数据进行json.loads(text)操作,操作后返回的是字典类型(建议使用这种方法,使用前判断text是否为空,为空也会报错),如下:

3、在python中使用json格式存储数据 

示例代码:

  1. import json
  2. list1 = [{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]},
  3. {'C': '123', 'D': '234'}]
  4. # 将数据写入文件
  5. file = open('json_demo.json', 'w')
  6. for i in list1:
  7. json_i = json.dumps(i)
  8. file.write(json_i + '\n')
  9. file.close()
  10. # 从文件中读取数据
  11. get_data = []
  12. with open('json_demo.json', 'r') as f:
  13. # 读取数据并分割,最后一个为空,所以去除
  14. new_list = f.read().split('\n')[:-1]
  15. for x in new_list:
  16. json_x = json.loads(x)
  17. print(type(json_x))
  18. get_data.append(json_x)
  19. f.close()
  20. print(f'原始数据为:{list1}')
  21. print(f'结果数据为:{get_data}')

运行结果:

  1. <class 'dict'>
  2. <class 'dict'>
  3. 原始数据为:[{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]}, {'C': '123', 'D': '234'}]
  4. 结果数据为:[{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]}, {'C': '123', 'D': '234'}]

4、对json数据进行转义

使用json在线转义工具:JSON在线 | JSON解析格式化—SO JSON在线工具

使用代码进行转义,示例代码如下:

  1. import json
  2. dic = {'name': 'dgw', 'sex': '男', 'age': 26, 'grade': [{'语文': 96}, {'数学': 99}]}
  3. print(dic)
  4. # json数据是双引号
  5. json_dic = json.dumps(dic, ensure_ascii=False)
  6. print(json_dic)
  7. # 对json_dic数据进行转义
  8. json_dic_escape = json.dumps(json_dic, ensure_ascii=False)
  9. print(json_dic_escape)
  10. # 对dic数据中某个字段单独转义
  11. dic['grade'] = json.dumps(dic['grade'], ensure_ascii=False)
  12. json_dic_escape2 = json.dumps(json.dumps(dic, ensure_ascii=False), ensure_ascii=False)
  13. print(json_dic_escape2)
  14. # 对json_dic_escape2数据进行转义解码
  15. json_dic_escape_decode = json.loads(json_dic_escape2)
  16. print(json_dic_escape_decode)
  17. with open('text.txt', 'a', encoding='utf-8') as f:
  18. f.write(str(dic) + '\n')
  19. f.write(json_dic + '\n')
  20. f.write(json_dic_escape + '\n')
  21. f.write(json_dic_escape2 + '\n')
  22. f.write(json_dic_escape_decode + '\n')

运行结果:

注意:控制台有时候打印的转义符号和写入文件中的转义符号有区别!

5、各种数据类型转换为json格式

将常见的数据类型格式转换为json格式。

示例代码:

  1. import json
  2. s = 'I love you!'
  3. lst = ['aa', 'bb', 'cc']
  4. dic = {"name": "dge", "age": 26}
  5. _set = {'aaa', 'bbb'}
  6. s_json = json.dumps(s)
  7. print(type(s_json), s_json)
  8. lst_json = json.dumps(lst)
  9. print(type(lst_json), lst_json)
  10. dic_json = json.dumps(dic)
  11. print(type(dic_json), dic_json)
  12. # 注意:下面写法是错误的,set集合类型的对象是不可以JSON序列化的
  13. # set_json = json.dumps(_set)
  14. # print(type(set_json), set_json)

运行结果:

 注意:set集合类型的对象是不可以JSON序列化的

示例代码:

  1. import json
  2. _set = {'aaa', 'bbb'}
  3. # 注意:下面写法是错误的,set集合类型的对象是不可以JSON序列化的
  4. # set_json = json.dumps(_set)
  5. # print(type(set_json), set_json)
  6. # 可以先将集合类型转换为列表类型
  7. set_json = json.dumps(list(_set))
  8. print(type(set_json), set_json)
  9. _set = set(json.loads(set_json))
  10. print(type(_set), _set)

运行结果:

有序字典也是可以通过json直接转换为字典格式的。

示例代码:

  1. import json
  2. from collections import OrderedDict
  3. dic = {"name": "dgw", "address": "beijing", "date_updated": "Sun, 11 Dec 2022 13:14:25 -0000"}
  4. order_dic = OrderedDict(dic)
  5. print(type(order_dic), order_dic)
  6. order_dic_json = json.dumps(order_dic)
  7. print(type(order_dic_json), order_dic_json)

运行结果:

 6、各种数据类型转换为json格式写入文件

示例代码:

  1. import json
  2. s = 'I love you!'
  3. lst = ['aa', 'bb', 'cc']
  4. dic = {"name": "dge", "age": 26}
  5. _set = {'aaa', 'bbb'}
  6. # 字符串
  7. with open('./string.json', 'w', encoding='utf-8') as f:
  8. f.write(json.dumps(s))
  9. # 列表list
  10. with open('./list.json', 'w', encoding='utf-8') as f:
  11. f.write(json.dumps(lst))
  12. # 字典dict
  13. with open('./dict.json', 'w', encoding='utf-8') as f:
  14. f.write(json.dumps(dic))
  15. # 集合set
  16. # 注意:TypeError: Object of type set is not JSON serializable
  17. # 注意:set集合类型的对象是不可以JSON序列化的
  18. # with open('./set.json', 'w', encoding='utf-8') as f:
  19. # f.write(json.dumps(_set))
  20. # 将集合转换成字符串格式是可以写入文件的
  21. with open('./set.json', 'w', encoding='utf-8') as f:
  22. f.write(str(_set))

7、json中使用separators消除空白

示例代码:

  1. import json
  2. dic = {"name": "dge", "age": 26}
  3. with open('./text.txt', 'w', encoding='utf-8') as f:
  4. f.write(json.dumps(dic))
  5. # 使用separators消除空白
  6. with open('./text2.txt', 'w', encoding='utf-8') as f:
  7. f.write(json.dumps(dic, separators=(',', ':')))

运行结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/191208
推荐阅读
相关标签
  

闽ICP备14008679号