我正在尝试完成这项工作,我想要的是当使用一些嵌套的 json 从 API 网关调用时,从 lambda 获取 json 作为输出。
这就是我所期望的,
{ "data": {"username":"随机用户","Age":20}", "message": "这是示例"}
但我逃脱了 json
{ "data": "\n\t{\n\t\t\"用户名\":\"随机用户\",\n\t\t\"年龄\":20\n\t }", "message": "这是示例"}
我正在尝试的示例代码
package main
import (
"encoding/json"
"log"
"net/http"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
)
type Response struct {
StatusCode int `json:"statusCode"`
Headers map[string]string `json:"headers"`
Body string `json:"body"`
}
type RequestBody struct {
Data any `json:"data"`
Message string `json:"message"`
}
const (
data string = `
{
"username":"Random User",
"Age":20
}`
)
func EventHandler(request events.APIGatewayProxyRequest) (Response, error) {
response := Response{}
log.Println(request.Headers)
body := RequestBody{Data: data, Message: "This is sample"}
b, _ := json.Marshal(body)
response.Body = string(b)
response.StatusCode = http.StatusOK
log.Println("Before Return")
return response, nil
}
func main() {
lambda.Start(EventHandler)
}
最佳答案
这是因为要编码(编码为 JSON)一个已包含 JSON 对象的字符串。相反,试试这个:
var data = map[string]any {
"username":"Random User",
"Age":20
}
或者你也可以这样做:
body := RequestBody{Data: json.RawMessage(data), Message: "This is sample"}
关于go - 从 ApiGateway 中的 lambda Go 返回 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76672281/