中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Python3中對json格式數據進行分析處理

發布時間:2021-01-29 15:12:06 來源:億速云 閱讀:189 作者:Leah 欄目:開發技術

如何在Python3中對json格式數據進行分析處理?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

一、如何將json數據轉換成python內部的數據類型

展示一下zabbix的接口返回的json數據(數據經過dumps編碼了,因為原數據為str類型,只有一行,不易讀)

js = json.dumps(get_alert(), indent=4, ensure_ascii=False)
print(js)
# get_alert()方法為獲取json數據,編碼后賦給js,打印js,結果如下:
# indent = 4意為設置縮進為4個空格,
# ensure_ascii=False參數是禁用ascii編碼,若不禁用,中文字符會輸出為ASCII碼
{
 "jsonrpc": "2.0",
 "result": [
  {
   "triggerid": "123456",
   "expression": "{23567}>95",
   "description": "High memory utilization > 95",
   "url": "",
   "status": "0",
   "value": "1",
   "priority": "4",
   "lastchange": "123456",
   "comments": "",
   "error": "",
   "templateid": "0",
   "type": "0",
   "state": "0",
   "flags": "0",
   "recovery_mode": "0",
   "recovery_expression": "",
   "correlation_mode": "0",
   "correlation_tag": "",
   "manual_close": "0",
   "opdata": "",
   "hosts": [
    {
     "hostid": "8888",
     "name": "window_sever"
    }
   ],
   "items": [
    {
     "itemid": "123456",
     "name": "Memory utilization",
     "description": "Memory used percentage is calculated as (100-pavailable)"
    }
   ]
  },
  {
   "triggerid": "17099",
   "expression": "{20221}<{$SWAP.PFREE.MIN.WARN} and {20222}>0",
   "description": "High swap space usage ( less than 20% free)",
   "url": "",
   "status": "0",
   "value": "1",
   "priority": "2",
   "lastchange": "123456789",
   "comments": "This trigger is ignored, if there is no swap configured",
   "error": "",
   "templateid": "16176",
   "type": "0",
   "state": "0",
   "flags": "0",
   "recovery_mode": "0",
   "recovery_expression": "",
   "correlation_mode": "0",
   "correlation_tag": "",
   "manual_close": "0",
   "opdata": "Free: {ITEM.LASTVALUE1}, total: {ITEM.LASTVALUE2}",
   "hosts": [
    {
     "hostid": "10325",
     "name": "linus"
    }
   ],
   "items": [
    {
     "itemid": "31681",
     "name": "Free swap space in %",
     "description": ""
    },
    {
     "itemid": "123456",
     "name": "Total swap space",
     "description": ""
    }
   ]
  }
 ],
 "id": "3"
}

接下來我們需要對json對象進行解碼

js_loads_data = json.loads(js)
# 解碼后的數據轉為python原生的字典類型(dict)

我們需要之后json對象里面的數據類型解碼為dict之后與之對應的數據類型、


jsonpython
objectdict
arraylist
stringstr
number (int)int
number (real)float
trueTrue
falseFalse
nullNone

記不住沒有關系,有方法可以現查:

print(type(js_loads_data))
>>><class 'dict'>

通過type()方法可以查看解碼后數據js_loads_data的數據類型,發現他說字典類型,由此知道如何訪問它內部的數據

print(js_loads_data["id"])
>>>3
print(type(js_loads_data["id"]))
>>><class 'str'>

訪問字典的值直接通過改變量的下標訪問即可

同理

print(type(js_loads_data["result"]))

可以取出result數組,但是這樣是打印整個數組,那么如何取result數組的里面的值呢?

二、訪問json對象里嵌套的數組

我們知道,json對象轉為字典后,數組對應的類型為列表(list)

所以我們可以通

print(type(js_loads_data["result"]))
>>><class 'list'>

過列表的下標來訪問列表的內容

print(js_loads_data['result'][0])
# 可以將列表下標為0的一個數據取出來
print(type(js_loads_data['result'][0]))
>>><class 'dict'>
# 打印類型發現,列表里面的第一個元素為字典類型,那么我們又知道了如何訪問該字典里面的數據:
for key in js_loads_data['result'][0]:
 print(key, ":", js_loads_data['result'][0][key])
>>>略
>>>hosts : [{'hostid': '10358', 'name': 'FTPC01(192.168.19.5)'}]
>>>items : [{'itemid': '33152', 'name': 'Memory utilization', 'description': 'Memory used percentage is calculated as (100-pavailable)'}]
>>>略
# 依次打印鍵和值,觀察后發現hosts和items兩個元素還是列表類型,如要取值還要進行處理

btw,分享一個取出列表所有元素的簡便方法:

result_list= [(item.get('hosts', 'NA')) for item in js_loads_data['result']]

這樣處理之后js_loads_data[‘result']三個字典里面的result列表已經被我取出來賦值給result_list這個列表了,現在result_list是列表嵌套列表再嵌套字典的類型(不太好理解,注意觀察上面的json數據),這樣使接下來的操作更為簡單

for tmp in result_list:
 print(tmp[0].get('name'))
>>>windows sever
>>>linus

看完上述內容,你們掌握如何在Python3中對json格式數據進行分析處理的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陈巴尔虎旗| 苍溪县| 沙雅县| 青岛市| 夹江县| 古浪县| 庄河市| 敦化市| 拜城县| 建宁县| 玛沁县| 延庆县| 察雅县| 洪湖市| 通榆县| 正定县| 白玉县| 和田市| 浏阳市| 通化县| 武邑县| 汝阳县| 广安市| 鄂温| 昌图县| 兖州市| 阿巴嘎旗| 神农架林区| 湟源县| 五常市| 静乐县| 临泉县| 沙洋县| 嘉鱼县| 通河县| 鲜城| 峨边| 文水县| 南木林县| 麟游县| 河源市|