aws/aws-sdk-go-v2

attributevalue.UnmarshalListOfMaps doesn't support json key diff from struct field name

tsesck opened this issue · 4 comments

Acknowledgements

Describe the bug

type MyStruct struct {
MovieTitle string. json:"movie_title"
}

var mystructs []MyStruct

When I run attributevalue.UnmarshalListOfMaps(scanOutput.Items, &mystructs), all MovieTitles are empty. If I change the field to Movie_Title, then it works

Expected Behavior

It used to work in v1 when I use

dynamodbattribute.UnmarshalListOfMaps

Current Behavior

type MyStruct struct {
MovieTitle string. json:"movie_title"
}

var mystruct MyStruct

When I run attributevalue.UnmarshalListOfMaps(scanOutput.Items, &mystruct), MovieTitle is empty. If I change the field to Movie_Title, then it works

Reproduction Steps

type MyStruct struct {
MovieTitle string. json:"movie_title"
}

var mystruct MyStruct

When I run attributevalue.UnmarshalListOfMaps(scanOutput.Items, &mystruct), MovieTitle is empty. If I change the field to Movie_Title, then it works

Possible Solution

No response

Additional Information/Context

No response

AWS Go SDK V2 Module Versions Used

$ go mod graph | grep github.com/aws
main github.com/aws/aws-sdk-go-v2@v1.26.0
main github.com/aws/aws-sdk-go-v2/config@v1.27.9
main github.com/aws/aws-sdk-go-v2/credentials@v1.17.9
main github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue@v1.13.11
main github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.16.0
main github.com/aws/aws-sdk-go-v2/internal/configsources@v1.3.4
main github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.6.4
main github.com/aws/aws-sdk-go-v2/internal/ini@v1.8.0
main github.com/aws/aws-sdk-go-v2/service/dynamodb@v1.31.0
main github.com/aws/aws-sdk-go-v2/service/dynamodbstreams@v1.20.3
main github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.11.1
main github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery@v1.9.5
main github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.11.6
main github.com/aws/aws-sdk-go-v2/service/sso@v1.20.3
main github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.23.3
main github.com/aws/aws-sdk-go-v2/service/sts@v1.28.5
main github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2@v1.26.0 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2@v1.26.0 github.com/jmespath/go-jmespath@v0.4.0
github.com/aws/aws-sdk-go-v2/config@v1.27.9 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/config@v1.27.9 github.com/aws/aws-sdk-go-v2/credentials@v1.17.9
github.com/aws/aws-sdk-go-v2/config@v1.27.9 github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.16.0
github.com/aws/aws-sdk-go-v2/config@v1.27.9 github.com/aws/aws-sdk-go-v2/internal/ini@v1.8.0
github.com/aws/aws-sdk-go-v2/config@v1.27.9 github.com/aws/aws-sdk-go-v2/service/sso@v1.20.3
github.com/aws/aws-sdk-go-v2/config@v1.27.9 github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.23.3
github.com/aws/aws-sdk-go-v2/config@v1.27.9 github.com/aws/aws-sdk-go-v2/service/sts@v1.28.5
github.com/aws/aws-sdk-go-v2/config@v1.27.9 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/config@v1.27.9 github.com/aws/aws-sdk-go-v2/internal/configsources@v1.3.4
github.com/aws/aws-sdk-go-v2/config@v1.27.9 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.6.4
github.com/aws/aws-sdk-go-v2/config@v1.27.9 github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.11.1
github.com/aws/aws-sdk-go-v2/config@v1.27.9 github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.11.6
github.com/aws/aws-sdk-go-v2/credentials@v1.17.9 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/credentials@v1.17.9 github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.16.0
github.com/aws/aws-sdk-go-v2/credentials@v1.17.9 github.com/aws/aws-sdk-go-v2/service/sso@v1.20.3
github.com/aws/aws-sdk-go-v2/credentials@v1.17.9 github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.23.3
github.com/aws/aws-sdk-go-v2/credentials@v1.17.9 github.com/aws/aws-sdk-go-v2/service/sts@v1.28.5
github.com/aws/aws-sdk-go-v2/credentials@v1.17.9 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/credentials@v1.17.9 github.com/aws/aws-sdk-go-v2/internal/configsources@v1.3.4
github.com/aws/aws-sdk-go-v2/credentials@v1.17.9 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.6.4
github.com/aws/aws-sdk-go-v2/credentials@v1.17.9 github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.11.1
github.com/aws/aws-sdk-go-v2/credentials@v1.17.9 github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.11.6
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue@v1.13.11 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue@v1.13.11 github.com/aws/aws-sdk-go-v2/service/dynamodb@v1.31.0
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue@v1.13.11 github.com/aws/aws-sdk-go-v2/service/dynamodbstreams@v1.20.3
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue@v1.13.11 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue@v1.13.11 github.com/jmespath/go-jmespath@v0.4.0
github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.16.0 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.16.0 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/internal/configsources@v1.3.4 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/internal/configsources@v1.3.4 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.6.4 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.6.4 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/service/dynamodb@v1.31.0 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/service/dynamodb@v1.31.0 github.com/aws/aws-sdk-go-v2/internal/configsources@v1.3.4
github.com/aws/aws-sdk-go-v2/service/dynamodb@v1.31.0 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.6.4
github.com/aws/aws-sdk-go-v2/service/dynamodb@v1.31.0 github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.11.1
github.com/aws/aws-sdk-go-v2/service/dynamodb@v1.31.0 github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery@v1.9.5
github.com/aws/aws-sdk-go-v2/service/dynamodb@v1.31.0 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/service/dynamodb@v1.31.0 github.com/jmespath/go-jmespath@v0.4.0
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams@v1.20.3 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams@v1.20.3 github.com/aws/aws-sdk-go-v2/internal/configsources@v1.3.4
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams@v1.20.3 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.6.4
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams@v1.20.3 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.11.1 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery@v1.9.5 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery@v1.9.5 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.11.6 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.11.6 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/service/sso@v1.20.3 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/service/sso@v1.20.3 github.com/aws/aws-sdk-go-v2/internal/configsources@v1.3.4
github.com/aws/aws-sdk-go-v2/service/sso@v1.20.3 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.6.4
github.com/aws/aws-sdk-go-v2/service/sso@v1.20.3 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.23.3 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.23.3 github.com/aws/aws-sdk-go-v2/internal/configsources@v1.3.4
github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.23.3 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.6.4
github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.23.3 github.com/aws/smithy-go@v1.20.1
github.com/aws/aws-sdk-go-v2/service/sts@v1.28.5 github.com/aws/aws-sdk-go-v2@v1.26.0
github.com/aws/aws-sdk-go-v2/service/sts@v1.28.5 github.com/aws/aws-sdk-go-v2/internal/configsources@v1.3.4
github.com/aws/aws-sdk-go-v2/service/sts@v1.28.5 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.6.4
github.com/aws/aws-sdk-go-v2/service/sts@v1.28.5 github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.11.1
github.com/aws/aws-sdk-go-v2/service/sts@v1.28.5 github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.11.6
github.com/aws/aws-sdk-go-v2/service/sts@v1.28.5 github.com/aws/smithy-go@v1.20.1
src$

Compiler and Version used

$ go version go version go1.21.7 darwin/arm64

Operating System and version

macOS Sonoma 14.3.1

attributevalue struct tags are keyed under dynamodbav:

type MyStruct struct {
    MovieTitle string `dynamodbav:"movie_title"`
}

@lucix-aws It worked. Thanks.

This issue is now closed. Comments on closed issues are hard for our team to see.
If you need more assistance, please open a new issue that references this one.

replacing json with dynamodbav worked. thanks.