#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"}