簡體   English   中英

如何在 Python 中查詢復雜的嵌套 JSON 數據

[英]How can I query complex nested JSON data in Python

我有以下 JSON 數據,它是 AWS“cli 描述 ec2 數據”輸出的縮短版本。

我需要使用 Python 以便查詢 InstanceId 值並獲取其所有 VolumeId 值(可能有 1 個以上的條目)及其 PrivateIpAddress 值。

輸出看起來像這樣:

   i-01,10.1.1.1,vol-123,vol-456
   i-02,10.2.2.2,vol-789

我是 Python 新手,似乎無法找到有關如何執行此操作的答案。 任何人都可以幫忙嗎?

{
"Reservations": [
    {
        "Instances": [
            {
                "InstanceId": "i-01",
                "PrivateIpAddress": "10.1.1.1", 
                "BlockDeviceMappings": [
                     {
                        "DeviceName": "/dev/sda", 
                        "Ebs": {
                            "Status": "attached", 
                            "VolumeId": "vol-123", 
                        }
                    }, 
                    {
                        "DeviceName": "/dev/sdb", 
                        "Ebs": {
                            "Status": "attached", 
                            "VolumeId": "vol-456", 
                        }
                    }
                ], 
                "Tags": [
                    {
                        "Value": "Server01", 
                        "Key": "Name"
                    }
                ], 
                "AmiLaunchIndex": 0
            }
        ], 
        "OwnerId": "123456789"
    }, 
    {
        "Instances": [
            {
                "InstanceId": "i-02",
                "PrivateIpAddress": "10.2.2.2", 
                "BlockDeviceMappings": [
                     {
                        "DeviceName": "/dev/sda", 
                        "Ebs": {
                            "Status": "attached", 
                            "VolumeId": "vol-789", 
                        }
                    }
                ], 
                "Tags": [
                    {
                        "Value": "Server02", 
                        "Key": "Name"
                    }
                ], 
                "AmiLaunchIndex": 0
            }
        ], 
        "OwnerId": "123456789"
    }
]

}

result = []
for reservation in d["Reservations"]:
    res = {}
    instances = reservation["Instances"][0]
    res['InstanceID'] = instances['InstanceId']
    res['PrivateIpAddress'] = instances['PrivateIpAddress']
    res['BlockDeviceMappings'] = []
    for blockdevice in instances['BlockDeviceMappings']:
        res['BlockDeviceMappings'].append(blockdevice['Ebs']['VolumeId'])
    result.append(res)

然后你可以這樣做:

final_df = pd.DataFrame(result)

以漂亮的方式顯示結果。

暫無
暫無

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

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