我将事件从events.json
文件传递到AWS lambda函数中,并在函数处理程序中对其进行解析。
代码是:
type MyEvent struct {
Param string `json:"param1"`
Token string `json:"token"`
}
func main() {
lambda.Start(Handler)
}
func Handler(ctx context.Context, evt json.RawMessage) (events.APIGatewayProxyResponse, error) {
var myEvent MyEvent
json.Unmarshal(evt, &myEvent)
fmt.Println(myEvent.Token)
fmt.Println(len(myEvent.Token))
// rest of the code is here
}
event.json
文件是:
{
"param1": "Param",
"token": "35c760f4-b3dc-4657-b4f3–2c6566d4f42e"
}
该函数的输出为
35c760f4-b3dc-4657-b4f3–2c6566d4f42e
38
正在打印的令牌的值正确,但长度不正确。令牌的长度为36,但正在解释/打印为38。
为什么会这样?
PS:我正在使用AWS SAM cli运行该程序。
答案 0 :(得分:1)
运行
func main() {
s := "35c760f4-b3dc-4657-b4f3–2c6566d4f42e"
fmt.Println(len(s))
}
"–"
,此字符的长度为3。这只是一个奇怪的字符。字符代码为8211
,您需要45
https://unicodelookup.com/#8211/1
https://unicodelookup.com/#45/1
len(strings.ReplaceAll(myEvent.Token, "–", "-"))
将为您提供正确的长度