1

I am passing in events into a AWS lambda function from a events.json file and parsing it in a function handler.

The code is:

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
}

The event.json file is:

{
    "param1": "Param",
    "token": "35c760f4-b3dc-4657-b4f3–2c6566d4f42e"
}

The output of the function is

35c760f4-b3dc-4657-b4f3–2c6566d4f42e
38

The value of the token that is being printed is correct but the length is not. The length of the token is 36 but is being interpreted/printed as 38.

Why is this happening ?

PS: I am using the AWS SAM cli to run the program.

1 Answer 1

1

running

func main() {
    s := "35c760f4-b3dc-4657-b4f3–2c6566d4f42e"
    fmt.Println(len(s))
}

"–" this character comes up as a length of 3. It's just a weird character. Has the character code of 8211, you want 45

https://unicodelookup.com/#8211/1

https://unicodelookup.com/#45/1

len(strings.ReplaceAll(myEvent.Token, "–", "-"))

will give you the right length

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.