如何在 Python 中高效解析具有动态键的复杂 JSON 对象以管理海运集装箱数据?

问题描述 投票:0回答:1

我正在为一家集装箱公司开发一个项目,我们需要处理来自提供集装箱运输信息的外部 API 的数据。 API 返回的 JSON 数据结构是高度动态的,某些键和嵌套对象可以根据运输类型或提供的数据而变化。

{
    "container_id": "ABC123",
    "status": "In Transit",
    "location": {
        "latitude": "40.7128",
        "longitude": "-74.0060",
        "city": "New York"
    },
    "cargo": {
        "type": "Electronics",
        "weight": "500kg"
    },
    "events": [
        {
            "event_type": "Departure",
            "timestamp": "2024-08-29T08:00:00Z"
        },
        {
            "event_type": "Customs Clearance",
            "timestamp": "2024-08-30T12:00:00Z"
        }
    ]
}

在另一个响应中,结构可能会有所不同,缺少一些键或添加了新键:

{
    "container_id": "DEF456",
    "status": "Delivered",
    "location": {
        "city": "Los Angeles"
    },
    "events": [
        {
            "event_type": "Arrival",
            "timestamp": "2024-08-31T14:00:00Z"
        }
    ]
}

我需要一种 Pythonic 方式来有效地处理这种动态 JSON 数据。具体来说,我正在寻找策略来:

  • 安全地访问深层嵌套的键,如果它们不存在,则不会导致错误。
  • 迭代 JSON 以提取与运输状态、位置和事件相关的特定信息,无论结构的变化如何。
  • 确保代码保持可读性和高性能,尤其是在处理大量货运数据时。

有哪些最佳实践或库可以帮助在 Python 中管理此类复杂且动态的 JSON 解析,特别是在运输或物流公司的环境中?

python json api
1个回答
0
投票

您可以使用Python的

dict.get()
方法安全地访问深度嵌套的键。

示例:

data1 = {
    "container_id": "ABC123",
    "location": {
        "latitude": "40.7128",
        "longitude": "-74.0060",
        "city": "New York"
    }
}

data2 = {
    "container_id": "DEF456",
    "location": {
        "city": "Los Angeles"
    }
}

print("Data 1:")
latitude = data1.get('location', {}).get('latitude')
print("Latitude: " + latitude) if latitude else print('Latitude not found')

print("Data 2:")
longitude = data2.get('location', {}).get('longitude')
print(longitude) if longitude else print('Longitude not found')

输出:

Data 1:
Latitude: 40.7128
Data 2:
Longitude not found
© www.soinside.com 2019 - 2024. All rights reserved.