В качестве части приложения, которое мы создаем, одним из этапов процесса является AWS Lamda, который фиксирует почтовый запрос, выполняет с ним некоторую работу, а затем перемещает один.Он имеет запрос API Gateway в качестве триггера, и тело этого запроса будет строкой JSON.У меня проблемы с анализом строки JSON для объекта GoLang.Вот что у меня есть:
Функция, которая перехватывает запрос:
func HandleRequest(ctx context.Context, event events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
log.Print(fmt.Sprintf("body:[%s] ", event.Body))
parseResponseStringToTypedObject(event.Body)
return events.APIGatewayProxyResponse{
StatusCode: http.StatusOK,
Body: "OK",
}, nil
}
Затем функция parseResponseStringToTypedObject
:
func parseResponseStringToTypedObject(responseString string) {
b := []byte(responseString)
var resp SimpleType
err := json.Unmarshal(b, &resp)
if err == nil {
log.Print(fmt.Sprintf("Account Name: [%s]", resp.accountName))
} else {
log.Print(fmt.Sprintf("Could not unmarshall JSON string: [%s]", err.Error()))
}
}
Вот структура SimpleType
:
type SimpleType struct {
accountName string `json:accountName`
amount int `json:amount`
}
Затем я, в качестве теста, опубликовал это тело JSON через почтальона: ![enter image description here](https://i.stack.imgur.com/3uwIn.png)
Я открыл журналы CloudWatch (где мои журналы lamdaк) и увидеть, что тело присутствует в свойстве event.Body
, а затем выйти из поля в не маршалируемом объекте (resp.accountName). Я заметил, что поле пустое.Почему это?Вот вывод журнала для запроса:
![enter image description here](https://i.stack.imgur.com/SDvTM.png)