Python对json数据的提取
JSON的全稱是”JavaScript Object Notation”,意思是JavaScript對象表示法,它是一種基于文本,獨立于語言的輕量級數據交換格式。XML也是一種數據交換格式,為什么沒有選擇XML呢?因為XML雖然可以作為跨平臺的數據交換格式,但是在JS(JavaScript的簡寫)中處理XML非常不方便,同時XML標記比數據多,增加了交換產生的流量,而JSON沒有附加的任何標記,在JS中可作為對象處理,所以我們更傾向于選擇JSON來交換數據。
1,為什么要研究json數據的提取呢?
是因為zabbix監控取數據的時候,很多都是要處理json中的某個指標數據的。例如我要從一大串的json數據中,取某個指標數據,怎么取呢?下面舉個例子:
json數據:{‘TotalCount’: 1, ‘InstanceSet’: [{‘Placement’: {‘Zone’: ‘ap-guangzhou-4’, ‘ProjectId’: 0, ‘HostIds’: None, ‘HostIps’: None, ‘HostId’: None}, ‘InstanceId’: ‘ins-6h6p3k6e’, 'InstanceTy
pe’: ‘S5.SMALL2’, ‘CPU’: 1, ‘Memory’: 2, ‘RestrictState’: ‘NORMAL’, ‘InstanceName’: ‘未命名’, ‘InstanceChargeType’: ‘PREPAID’, ‘SystemDisk’: {‘DiskType’: ‘CLOUD_PREMIUM’, ‘DiskId’: 'd
isk-h5o7wnf0’, ‘DiskSize’: 50}, ‘DataDisks’: None, ‘PrivateIpAddresses’: [‘172.16.0.12’], ‘PublicIpAddresses’: [‘134.175.228.48’], ‘InternetAccessible’: {‘InternetChargeType’: 'BANDWI
DTH_PREPAID’, ‘InternetMaxBandwidthOut’: 1, ‘PublicIpAssigned’: None, ‘BandwidthPackageId’: None}, ‘VirtualPrivateCloud’: {‘VpcId’: ‘vpc-mk4mrt4b’, ‘SubnetId’: ‘subnet-py2q6cqc’, 'AsV
pcGateway’: False, ‘PrivateIpAddresses’: None, ‘Ipv6AddressCount’: None}, ‘ImageId’: ‘img-oikl1tzv’, ‘RenewFlag’: ‘NOTIFY_AND_MANUAL_RENEW’, ‘CreatedTime’: ‘2020-12-25T08:55:24Z’, 'Ex
piredTime’: ‘2021-01-25T08:55:24Z’, ‘OsName’: ‘CentOS 7.5 64位’, ‘SecurityGroupIds’: [‘sg-r8l8s8ef’], ‘LoginSettings’: {‘Password’: None, ‘KeyIds’: [‘skey-oa700dq3’], ‘KeepImageLogin’testOperationState’: ‘SUCCESS’, ‘LatestOperationRequestId’: ‘bc0bafe1-0c8f-4be5-9ddf-8933f4f3d8ed’, ‘DisasterRecoverGroupId’: ‘’, ‘IPv6Addresses’: None, ‘CamRoleName’: ‘’, 'HpcCluster
Id’: ‘’, ‘RdmaIpAddresses’: None}], ‘RequestId’: ‘9a97237b-a614-4ef9-9f50-18190911c120’}
我要從里面抽取出InstanceId 這個指標的值,這里推薦用一個在線的json數據處理網站:https://www.sojson.com/simple_json.html,這個網站方便我們分析json數據的結構的。
看圖吧:
2,取某個數據,用json.loads
json.loads 用于解碼 JSON 數據,json.loads()函數是將json格式數據轉換為字典(可以這么理解,json.loads()函數是將字符串轉化為字典),res就是上面那串json數據了。觀察json數據結構,InstanceId包含在元數組InstanceSet里面,然后json.load(res)將數據轉化為字典,選取InstanceSet元數組里面的數據,之后直接選取InstanceId對象,就可以得出該對象的數值了。如下圖:
打印結果:
其它的原理不細說了,自己百度python json比我說的好,然后自己嘗試獲取其它的數據就知道怎么用了。我就用它實現了一些功能。如下圖,想要什么值就可以打印出它的值。
技術交流歡迎加入Q群:177428068
總結
以上是生活随笔為你收集整理的Python对json数据的提取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oc10--练习
- 下一篇: [转]RDL(C) Report Des