簡體   English   中英

如何從給定的json獲取特定值

[英]How to get a particular value from the given json

我有以下JSON

`{
    "count": 4,
    "node": [{
        "assetRecord": {
            "additionalhardware": null,
            "admin": null,
            "assetNumber": null,
            "autoenable": null,
            "building": null,
            "category": "Unspecified",
            "circuitId": null,
            "comment": null,
            "connection": null,
            "cpu": null,
            "dateInstalled": null,
            "department": null,
            "description": null,
            "displayCategory": null,
            "division": null,
            "enable": null,
            "floor": null,
            "hdd1": null,
            "hdd2": null,
            "hdd3": null,
            "hdd4": null,
            "hdd5": null,
            "hdd6": null,
            "id": 10817,
            "inputpower": null,
            "lastModifiedBy": "",
            "lastModifiedDate": 1491855810758,
            "lease": null,
            "leaseExpires": null,
            "maintContractExpiration": null,
            "maintContractNumber": null,
            "maintcontract": null,
            "managedObjectInstance": null,
            "managedObjectType": null,
            "manufacturer": null,
            "modelNumber": null,
            "notifyCategory": null,
            "numpowersupplies": null,
            "operatingSystem": null,
            "password": null,
            "pollerCategory": null,
            "port": null,
            "rack": null,
            "rackunitheight": null,
            "ram": null,
            "region": null,
            "room": null,
            "serialNumber": null,
            "slot": null,
            "snmpcommunity": null,
            "storagectrl": null,
            "supportPhone": null,
            "thresholdCategory": null,
            "username": null,
            "vendor": null,
            "vendorAssetNumber": null,
            "vendorFax": null,
            "vendorPhone": null,
            "vmwareManagedEntityType": null,
            "vmwareManagedObjectId": null,
            "vmwareManagementServer": null,
            "vmwareState": null,
            "vmwareTopologyInfo": null
        },
        "categories": [],
        "createTime": 1491855810758,
        "foreignId": null,
        "foreignSource": null,
        "id": "564",
        "label": "10.21.204.174",
        "labelSource": "A",
        "lastCapsdPoll": 1491855810984,
        "type": "A"
    }, {
        "assetRecord": {
            "additionalhardware": null,
            "admin": null,
            "assetNumber": null,
            "autoenable": null,
            "building": null,
            "category": "Unspecified",
            "circuitId": null,
            "comment": null,
            "connection": null,
            "cpu": null,
            "dateInstalled": null,
            "department": null,
            "description": null,
            "displayCategory": null,
            "division": null,
            "enable": null,
            "floor": null,
            "hdd1": null,
            "hdd2": null,
            "hdd3": null,
            "hdd4": null,
            "hdd5": null,
            "hdd6": null,
            "id": 10589,
            "inputpower": null,
            "lastModifiedBy": "",
            "lastModifiedDate": 1490819238331,
            "lease": null,
            "leaseExpires": null,
            "maintContractExpiration": null,
            "maintContractNumber": null,
            "maintcontract": null,
            "managedObjectInstance": null,
            "managedObjectType": null,
            "manufacturer": null,
            "modelNumber": null,
            "notifyCategory": null,
            "numpowersupplies": null,
            "operatingSystem": null,
            "password": null,
            "pollerCategory": null,
            "port": null,
            "rack": null,
            "rackunitheight": null,
            "ram": null,
            "region": null,
            "room": null,
            "serialNumber": null,
            "slot": null,
            "snmpcommunity": null,
            "storagectrl": null,
            "supportPhone": null,
            "thresholdCategory": null,
            "username": null,
            "vendor": null,
            "vendorAssetNumber": null,
            "vendorFax": null,
            "vendorPhone": null,
            "vmwareManagedEntityType": null,
            "vmwareManagedObjectId": null,
            "vmwareManagementServer": null,
            "vmwareState": null,
            "vmwareTopologyInfo": null
        },
        "categories": [],
        "createTime": 1490819238331,
        "foreignId": null,
        "foreignSource": null,
        "id": "561",
        "label": "10.21.205.148",
        "labelSource": "A",
        "lastCapsdPoll": 1490819238557,
        "type": "A"
    }, {
        "assetRecord": {
            "additionalhardware": null,
            "admin": null,
            "assetNumber": null,
            "autoenable": null,
            "building": null,
            "category": "Unspecified",
            "circuitId": null,
            "comment": null,
            "connection": null,
            "cpu": null,
            "dateInstalled": null,
            "department": null,
            "description": null,
            "displayCategory": null,
            "division": null,
            "enable": null,
            "floor": null,
            "hdd1": null,
            "hdd2": null,
            "hdd3": null,
            "hdd4": null,
            "hdd5": null,
            "hdd6": null,
            "id": 7554,
            "inputpower": null,
            "lastModifiedBy": "",
            "lastModifiedDate": 1477563144159,
            "lease": null,
            "leaseExpires": null,
            "maintContractExpiration": null,
            "maintContractNumber": null,
            "maintcontract": null,
            "managedObjectInstance": null,
            "managedObjectType": null,
            "manufacturer": null,
            "modelNumber": null,
            "notifyCategory": null,
            "numpowersupplies": null,
            "operatingSystem": null,
            "password": null,
            "pollerCategory": null,
            "port": null,
            "rack": null,
            "rackunitheight": null,
            "ram": null,
            "region": null,
            "room": null,
            "serialNumber": null,
            "slot": null,
            "snmpcommunity": null,
            "storagectrl": null,
            "supportPhone": null,
            "thresholdCategory": null,
            "username": null,
            "vendor": null,
            "vendorAssetNumber": null,
            "vendorFax": null,
            "vendorPhone": null,
            "vmwareManagedEntityType": null,
            "vmwareManagedObjectId": null,
            "vmwareManagementServer": null,
            "vmwareState": null,
            "vmwareTopologyInfo": null
        },
        "categories": [],
        "createTime": 1477563144159,
        "foreignId": null,
        "foreignSource": null,
        "id": "462",
        "label": "10.21.50.153",
        "labelSource": "A",
        "lastCapsdPoll": 1490722710498,
        "type": "A"
    }, {
        "assetRecord": {
            "additionalhardware": null,
            "admin": null,
            "assetNumber": null,
            "autoenable": null,
            "building": null,
            "category": "Unspecified",
            "circuitId": null,
            "comment": null,
            "connection": null,
            "cpu": null,
            "dateInstalled": null,
            "department": null,
            "description": null,
            "displayCategory": null,
            "division": null,
            "enable": null,
            "floor": null,
            "hdd1": null,
            "hdd2": null,
            "hdd3": null,
            "hdd4": null,
            "hdd5": null,
            "hdd6": null,
            "id": 5119,
            "inputpower": null,
            "lastModifiedBy": "",
            "lastModifiedDate": 1461419153008,
            "lease": null,
            "leaseExpires": null,
            "maintContractExpiration": null,
            "maintContractNumber": null,
            "maintcontract": null,
            "managedObjectInstance": null,
            "managedObjectType": null,
            "manufacturer": null,
            "modelNumber": null,
            "notifyCategory": null,
            "numpowersupplies": null,
            "operatingSystem": null,
            "password": null,
            "pollerCategory": null,
            "port": null,
            "rack": null,
            "rackunitheight": null,
            "ram": null,
            "region": null,
            "room": null,
            "serialNumber": null,
            "slot": null,
            "snmpcommunity": null,
            "storagectrl": null,
            "supportPhone": null,
            "thresholdCategory": null,
            "username": null,
            "vendor": null,
            "vendorAssetNumber": null,
            "vendorFax": null,
            "vendorPhone": null,
            "vmwareManagedEntityType": null,
            "vmwareManagedObjectId": null,
            "vmwareManagementServer": null,
            "vmwareState": null,
            "vmwareTopologyInfo": null
        },
        "categories": [],
        "createTime": 1461419153008,
        "foreignId": null,
        "foreignSource": null,
        "id": "389",
        "label": "dummyname_xv1",
        "labelSource": "A",
        "lastCapsdPoll": 1490722710502,
        "type": "A"
    }],
    "totalCount": 271
}

上面的代碼實際上轉儲到文件中(例如abc.txt),並且是有效的JSON格式。 我需要打開文件並遍歷“標簽”字段。 我需要編寫一個代碼,僅當它是IP時(即格式為0.0.0.0的東西),才應提取/打印“標簽”值

怎么做?

嘗試使用json模塊來解析json文件並迭代node

json.load()

使用此轉換表將fp(支持.read()的包含JSON文檔的類似文件的對象)反序列化為Python對象。

如果要驗證IP字符串是否有效,則可以使用inet_aton()

將IPv4地址從點分四進制字符串格式(例如'123.45.67.89')轉換為32位壓縮二進制格式,即長度為四個字符的字符串。

import json
import socket


for i in json.load(open('ooo.json'))["node"]:
    try:
        socket.inet_aton(i["label"])
        print(i["label"])
    except Exception as e:
        pass

結果:

10.21.204.174
10.21.205.148
10.21.50.153

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM