JSON .parse (...) не работает должным образом, точечный синтаксис не работает - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь использовать JSON.parse(...) против строки JSON, но по какой-то причине, когда я пытаюсь получить (.) Доступ к объекту, я получаю "неопределенный" на узлах, которые, как я знаю, существуют в JSON. Разве JSON.parse(string) не должен возвращать объект?

Вот мой код

var notificationText = JSON.parse(event.data.text());
console.log('notificationText Object Stringified: ' + JSON.stringify(notificationText));
console.log('NotificationText Object Not Stringified: ' + notificationText);
console.log('NotificationText.Notification Object: ' + notificationText.notification);

Вот вывод на консоль для первого "console.log(...)":

notificationText Object Stringified: "{\"notification\":{\"body\":\"this is coolfgsdfsfdsfdsdfsdfsfds\",\"title\":\"Whoa\",\"data\":{\"url\":\"http://www.yahoo.com\"},\"requireInteraction\":true}}"

Вот консольный вывод для второго «console.log(...)»:

NotificationText Object Not Stringified: {"notification":{"body":"this is coolfgsdfsfdsfdsdfsdfsfds","title":"Whoa","data":{"url":"http://www.yahoo.com"},"requireInteraction":true}}

Вот консольный вывод для третьего «console.log(...)»:

NotificationText.Notification Object: undefined

Вот мой JSON в более удобный для чтения формат:

{
    "notification": {
        "body": "this is coolfgsdfsfdsfdsdfsdfsfds",
        "title": "Whoa",
        "data": {
            "url": "http://www.yahoo.com"
        },
        "requireInteraction": true
    }
}

Мой вопрос: почему я получаю "неопределенное", когда пытаюсь поставить синтаксис точки на объекте "messagesText"?

1 Ответ

0 голосов
/ 02 мая 2020

Вы объединяете Объект со строкой. Вам нужно go для точного значения, например

console.log('NotificationText.Notification Object: ' + notificationText.body);

Или, если вы все еще хотите напечатать полный объект так, как вы это делали, тогда вместо + введите запятую (,), например:

console.log('NotificationText.Notification Object: ', notificationText.notification);
...