JSON возвращает массив чисел вместо значения в объекте в JSON - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь go через этот JSON объект и извлечь из него некоторые значения.

let currentPage = "
{
    "sys": {
        "space": {
            "sys": {
                "type": "Link",
                "linkType": "Space",
                "id": "xaswoie0ncrg"
            }
        },
        "id": "7lqAYzwP92G9TMDBUVnadp",
        "type": "Entry",
        "createdAt": "2020-07-30T18:08:33.159Z",
        "updatedAt": "2020-07-30T18:22:50.276Z",
        "environment": {
            "sys": {
                "id": "master",
                "type": "Link",
                "linkType": "Environment"
            }
        },
        "revision": 2,
        "contentType": {
            "sys": {
                "type": "Link",
                "linkType": "ContentType",
                "id": "landingPage"
            }
        },
        "locale": "en-US"
    },
    "fields": {
        "pageTitle": "Leading the next generation of renewable fuels",
        "heroImage": {
            "sys": {
                "type": "Link",
                "linkType": "Asset",
                "id": "vnjfnYzSyhqOjKlmNmBGb"
            }
        },
        "pageZone": [
            {
                "sys": {
                    "type": "Link",
                    "linkType": "Entry",
                    "id": "3aQvORUYowW0SoofuvHUov"
                }
            },
            {
                "sys": {
                    "type": "Link",
                    "linkType": "Entry",
                    "id": "Qfj1hNJ9euSkBcAQEDaN5"
                }
            }
        ]
    }
}"

Затем я анализирую JSON:

let currentPage2 = JSON.parse(currentPage);

Вот в чем проблема. Если зарегистрируйте это в консоли:

console.log(Object.keys(currentPage2.fields.pageZone[0].sys.id));

Узел возвращает это в терминале:

[
  '0',  '1',  '2',  '3',  '4',
  '5',  '6',  '7',  '8',  '9',
  '10', '11', '12', '13', '14',
  '15', '16', '17', '18', '19',
  '20', '21'
]

Я хочу использовать это:

console.log(Object.keys(currentPage2.fields.pageZone[0].sys.id).value);
//with expected value of "3aQvORUYowW0SoofuvHUov"

Вместо этого возвращается undefined. Понятия не имею, почему это происходит. Я попытался использовать JSON.stringify et c и снова проанализировать его, но он по-прежнему ведет себя так.

Ответы [ 2 ]

2 голосов
/ 06 августа 2020

Просто используйте currentPage2.fields.pageZone[0].sys.id. В Object.keys нет необходимости, если вам не нужен каждый индекс строки.

1 голос
/ 06 августа 2020

currentPage2.fields.pageZone[0].sys.id - это строка, и, поскольку Object.keys будет интерпретировать строку как повторяемую, ключи будут индексами каждого символа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...