首页 > 解决方案 > 如何在 Python 中访问我的 JSON 中的元素?

问题描述

我正在尝试解析我的 JSON 中元素的获取值。

import json
  
f = open('links.json',)
  
data = json.load(f)
  
for i in data['jsonObject']['links']:
    for y in data['jsonObject']['coordonates']:
        if (i['take1'] == y):
          point1 = y
        if (i['take2'] == y):
            point2 = y
    print(point1['x'])
    print(point1['y'])
    print(point2['x'])
    print(point2['y'])


f.close()

而我的json是这样的

{
    "jsonObject": {
        "coordonates": {
            "id1": {
                "x": 100,
                "y": 60
            },
            "id2": {
                "x": 50,
                "y": 100
            },
            "id3": {
                "x": -100,
                "y": 20
            },
            "id4": {
                "x": 30,
                "y": 10
            },
        },
        "links": [
            {
                "take1": "id4",
                "take2": "id1",
            },
            {
                "take1": "id4",
                "take2": "id3",
            },
            {
                "take1": "id3",
                "take2": "id2",
            },
            {
                "take1": "id2",
                "take2": "id1",
            },
        ],
    },
}

使用我的代码,我想转到“链接”,获取两个 ID。当我有我的两个 id 时,我要“协调”。现在我想得到两个id的“x”和“y”。但我的问题是当我试图访问我拥有的“x”和“y”时

TypeError: string indices must be integers

当我打印时print(y['x']),我遇到了同样的问题。我无法访问 y 元素。

有人知道我的错误吗?我该怎么做才能得到我的'x'和'y'?

标签: pythonjson

解决方案


y只是关键,不是内容。但是您已经有一个字典来访问 id,因此不需要内部 for 循环。

with open('links.json') as f:
    data = json.load(f)

coordinates = data['jsonObject']['coordonates']
for link in data['jsonObject']['links']:
    point1 = coordinates[link['take1']]
    point2 = coordinates[link['take2']]
    print(point1['x'])
    print(point1['y'])
    print(point2['x'])
    print(point2['y'])

推荐阅读