AWS Lambda: как мне получить свойство внутри event.body, оно возвращает неопределенное значение

#javascript #json #amazon-web-services #aws-lambda #aws-api-gateway

#javascript #json #amazon-веб-сервисы #aws-lambda #aws-api-gateway

Вопрос:

введите описание изображения здесь

Я пытался получить event.body.data, но оно продолжает возвращать мне неопределенное значение, я попробовал JSON.parse(событие), JSON.parse(event.body), JSON.parse(event.body.data), JSON.stringify, почти опробовал то, что я могу сделать сПохоже, что JSON и не все из них работают. Когда я попробовал JSON.parse(событие), выдает синтаксическую ошибку. Поэтому я подозреваю, что это уже в формате объекта JSON и при консоли.зарегистрируйте его, у него не было цитаты » «. Если оно уже в формате JSON, почему я не могу получить доступ к этому свойству в нем. Я также попытался обернуть его внутри if(event.body.data), и это тоже не работает. Кто-нибудь знает, как получить свойство внутри event.body?

Комментарии:

1. Можете ли вы опубликовать свой event текст в виде текста в блоке кода, а не скриншота?

Ответ №1:

Судя по вашему скриншоту, похоже body , что данные представляют собой строку JSON. Это означает, что вы должны сначала проанализировать его, прежде чем сможете его использовать. Что-то вроде этого:

 exports.handler = function(event, context, callback) {
  const body = JSON.parse(event.body)
  console.log('data: ', body.data)
}
 

Затем примените предложения от @Marcin и исправьте свои данные JSON, потому что в них отсутствуют кавычки.

Ответ №2:

Ваша even.body недопустимая строка json, которая объясняет причину JSON.parse сбоя. Таким образом, вы должны проверить, кто / что делает запрос, и изменить код на стороне клиента, чтобы вызвать ваш API с допустимой строкой json.

Это должно быть:

 '{"action": "message, "data": "black clolor"}'
 

не

 "{action: 'message, data: 'black clolor'}"
 

Ответ №3:

Спасибо @Marcin за отзыв, это действительно было вызвано недопустимой строкой json, отправленной из интерфейса.

Изменение его на приведенный ниже код решило проблему.

 {"action": "message", "data": "black clolor"}