1. 程式人生 > >python解析json檔案回顧(load/loads)

python解析json檔案回顧(load/loads)

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