如何正确访问嵌套 JSON 对象中的深层字段

本文详解 Python 中读取 JSON 文件后访问多层嵌套键(如 json_map['epapconfig']['Display']['suffix'])时出现 'int' object is not subscriptable 错误的成因与解决方案,涵盖加载、验证、安全访问全流程。

本文详解 Python 中读取 JSON 文件后访问多层嵌套键(如 `json_map['epapconfig']['Display']['suffix']`)时出现 `'int' object is not subscriptable` 错误的成因与解决方案,涵盖加载、验证、安全访问全流程。

在 Python 中解析 JSON 数据后无法访问嵌套字段(例如 json_map['epapconfig']['Display']['suffix']),并报错 TypeError: 'int' object is not subscriptable,根本原因通常不是 JSON 结构本身有问题,而是变量被意外覆写为整数类型——最常见的情况是:你曾用 json_map = 0、json_map = 1 或类似语句重定义了该变量,导致后续尝试用方括号索引时实际操作的是一个整数。

以下是一个完整、健壮的访问示例:

import json

# ✅ 正确方式:从字符串或文件加载 JSON
json_str = '''{
    "epapconfig": {
        "suffix": "Enter Choice: ",
        "Display": {
            "suffix": "Press return to continue..."
        },
        "Security": {
            "suffix": "Enter Choice: ",
            "Timeout": {
                "suffix": "Enter Choice: ",
                "Display": {
                    "suffix": "Press return to continue..."
                }
            }
        }
    },
    "epapdev": {"suffix": "]$ "},
    "su": {"suffix": "Password: "},
    "root": {"suffix": "]# "}
}'''

# 加载为字典
json_map = json.loads(json_str)

# 安全访问嵌套字段(推荐)
try:
    suffix = json_map['epapconfig']['Display']['suffix']
    print("Display suffix:", suffix)  # 输出:Press return to continue...
except KeyError as e:
    print(f"缺失必要键: {e}")
except TypeError as e:
    print(f"类型错误 —— 可能 json_map 不是字典: {e}")

⚠️ 关键注意事项:

✅ 总结:该错误几乎总是源于变量类型被意外篡改(如赋值为 int),而非 JSON 格式问题。务必确保 json_map 始终为 dict 类型,并通过 isinstance(json_map, dict) 进行校验,再进行嵌套访问。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。