python解析json檔案回顧(load/loads)
阿新 • • 發佈:2019-01-01
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