New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DynamoDB AttributeValue's MarshallMap() Does Not Support time.Time Correctly #2383
Comments
Hi @kmacmcfarlane , The Dynamodb marshallar is built to account for Dynamodb native types (BOOL,SS,N,S,L, etc..) time.Time is not one of them. Thats why there is no out of the box functionality to support this. I have converted this to a feature request and added it to our backlog until it gets prioritized. In the meantime, as a workaround, you can handle your time.Time data by converting it into a string or an epoch number, both of which are supported by the encoder. For example, you can format the time.Time as an ISO 8601 string, or you can convert it to a UNIX timestamp (epoch number). Something like epochNumber := yourTime.Unix() Thanks, |
@RanVaknin This is surprising, since the godocs indicate Further the docs state
It feels like it shouldn't behave any different than a regular |
Describe the bug
I am seeing that it's not possible to use
omitempty
ontime.Time
struct fields withattributevalue.MarshalMap()
fromgithub.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue
.This behavior was observed on the latest version:
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue
v1.12.3Expected Behavior
When
MarshalMap()
is supplied with a struct containing atime.Time
field with the tagomitempty
whos value is the zero value, the output map should not contain a key for that struct field.Current Behavior
Output attribute value map includes a key and value for the field that should be omitted.
Reproduction Steps
repro_test.go
service_test_suite.go
Possible Solution
As far as I've been able to reason by stepping through the repro above in a debugger, there should probably be a check for
fieldTag.OmitEmpty
in this code block inencode.go
(just like thefieldTag.AsUnixTime
tag is checked).aws-sdk-go-v2/feature/dynamodb/attributevalue/encode.go
Line 478 in 3bd97c0
Additional Information/Context
No response
AWS Go SDK V2 Module Versions Used
Compiler and Version used
go version go1.20.6 linux/amd64
Operating System and version
Fedora Linux 37
The text was updated successfully, but these errors were encountered: