python解析json文件回顾(load/loads)

谁说我不能喝 提交于 2019-12-08 10:53:37

example.json文件如下

{
  "page": "user",
  "uri": "/userinfo",
  "elements": [
    {
      "var_name": "username",
      "description": "登录用户名"
    },
    {
      "var_name": "password",
      "description": "登录密码"
    }
  ],
  "data": {
      "userlist": [
          {
              "username": "张三",
              "password": "******"
          },
          {
              "username": "李四",
              "password": "******"
          }
      ],
    "total": 2
  }
}

读取json文件(解析json文件)

with open('example.json', 'r') as jsonfile:
    json_string = json.load(jsonfile)
  • 解释:
    json.load是decode的一种方式,即将json文件中的数据类型解析成python的数据类型,数据类型解析前后的规则如下表:
    这里写图片描述

    即json文件(object)解析成了一个大字典(dict),字典中嵌套了list/unicode/boolean/None/dict等数据类型.

  • 其他说明:
    json.load是解析json文件的;json.loads是解析json字符串的,如果直接解析接口的返回诗句,直接用json.loads就好

选择元素

  • 按键值选择:
>>> json_string['page']
user
  • 根据上面的分析,elements是json的array,会被解析成python的list:
>>> for element in json_string['elements']:
    print element

{'description': '登录用户名', 'var_name': 'username'}
{'description': '登录密码', 'var_name': 'password'}

即每一个element都是一个dict,json_string['elements']是一个列表(list),列表中每个元素都是字典,选择列表中的元素的时候,就要用for循环来遍历了。

  • data是json文件中嵌套的json字符串,即也是一个json object,会被解析成python的字典:
>>> json_string['data']
{'userlist': [{'username': '张三', 'password': '******'}, {'username': '李四', 'password': '******'}], 'total': 2}

json_string['data']也是一个字典,json_string['data']['userlist']就可以选择出userlist这个数组了:

>>> json_string['data']['userlist']
[{'username': '张三', 'password': '******'}, {'username': '李四', 'password': '******'}]
>>> json_string['data']['total']
2

Reference
https://docs.python.org/2/library/json.html#basic-usage

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!