zoukankan      html  css  js  c++  java
  • python之json操作

    1.json.dumps()用于将dict类型的数据转成str

    备注:文件路径前面加上 r 是为了避免转义

    复制代码
     1 import json
     2 
     3 dict = {'a': 'wo', 'b': 'zai', 'c': 'zhe', 'd': 'li'}
     4 string = json.dumps(dict)
     5 print(dict)
     6 print(string)
     7 print(type(dict))
     8 print(type(string))
     9 
    10 with open(r'C:UserszyDocumentsGitHubpython3searchTestjson.json','w')as f:
    11     f.write(string)
    复制代码
    1 {'a': 'wo', 'b': 'zai', 'c': 'zhe', 'd': 'li'}
    2 {"a": "wo", "b": "zai", "c": "zhe", "d": "li"}
    3 <class 'dict'>
    4 <class 'str'>

    如果没有进行转换,则会报错:TypeError: write() argument must be str, not dict

    1 import json
    2 
    3 dict = {'a': 'wo', 'b': 'zai', 'c': 'zhe', 'd': 'li'}
    4 with open(r'C:UserszyDocumentsGitHubpython3searchTestjson.json','w')as f:
    5     f.write(dict)
    复制代码
    1 {'a': 'wo', 'b': 'zai', 'c': 'zhe', 'd': 'li'}
    2 Traceback (most recent call last):
    3 <class 'dict'>
    4   File "C:/Users/zy/Documents/GitHub/python3/searchTest/json_test.py", line 11, in <module>
    5     f.write(dict)
    6 TypeError: write() argument must be str, not dict
    复制代码

     json.dumps()参数解释:常用参数解释

    indent:应该是一个非负的整型,如果是0,或者为空,则一行显示数据;否则会换行且按照indent的数量显示前面的空白

    sort_keys:将数据根据keys的值进行排序

    1 response = requests.post(url=url,headers=headers).json()
    2 print(json.dumps(response,sort_keys=True,indent=4))

    举例结果:

    复制代码
     1 {
     2     "code": "200",
     3     "message": "",
     4     "redirect": "",
     5     "value": {
     6         "name": "so",
     7         "title": "360",
     8         "value": "2"
     9     }
    10 }
    复制代码

    2.json.loads():用于将str类型的数据转成dict

    复制代码
     1 dict = {'a': 'wo', 'b': 'zai', 'c': 'zhe', 'd': 'li'}
     2 dumps = json.dumps(dict)
     3 loads = json.loads(dumps)
     4 
     5 print(dict)
     6 print(dumps)
     7 print(loads)
     8 
     9 print(type(dict))
    10 print(type(dumps))
    11 print(type(loads))
    复制代码
    复制代码
    1 {'a': 'wo', 'b': 'zai', 'c': 'zhe', 'd': 'li'}
    2 {"a": "wo", "b": "zai", "c": "zhe", "d": "li"}
    3 {'a': 'wo', 'b': 'zai', 'c': 'zhe', 'd': 'li'}
    4 <class 'dict'>
    5 <class 'str'>
    6 <class 'dict'>
    复制代码

    3.json.dump()用于将dict类型的数据转成str,并写入到json文件中

    1 dict = {'a': 'wo', 'b': 'zai', 'c': 'zhe', 'd': 'li'}
    2 json.dump(dict,open(r'C:UserszyDocumentsGitHubpython3searchTestjson.json','w'))

    4.json.load()用于从json文件中读取数据

    1 filename = (r'C:UserszyDocumentsGitHubpython3searchTestjson.json')
    2 jsObj = json.load(open(filename))
    3 print(jsObj)
    4 print(type(jsObj))
    1 {'a': 'wo', 'b': 'zai', 'c': 'zhe', 'd': 'li'}
    2 <class 'dict'>

    常见问题:

      1. json.dumps方法默认会输出成这种格式"u535au5ba2u56ed"

      要输出中文需要指定ensure_ascii参数为False,如下代码片段:

      json.dumps({'text':"中文"},ensure_ascii=False,indent=2) # indent 进行缩进展示
  • 相关阅读:
    AX 2012 Form and Parts
    AX 2012 SSRS print setting-报表打印输出设置
    AX 2012 关于parts 添加
    AX Dynamic 2012 tabletype:TempDB使用
    AX Dynamic 2012 SSRS 按行数分页
    AX Dynamic 2012 SSRS autorepot中取当前公司名、打印时间、打印页码
    AX Dynamics 去中文字符长度:中文字符当2个字符处理
    AX dynamics 2012 ssrs 开发报错:Native compiler return value: ‘[BC30179]
    在Ubuntu 下编译c语言
    在ubuntu加载flash的方法
  • 原文地址:https://www.cnblogs.com/xingxia/p/python_json.html
Copyright © 2011-2022 走看看