| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- // Package dynamodbattribute provides marshaling and unmarshaling utilities to
- // convert between Go types and dynamodb.AttributeValues.
- //
- // These utilities allow you to marshal slices, maps, structs, and scalar values
- // to and from dynamodb.AttributeValue. These are useful when marshaling
- // Go value tyes to dynamodb.AttributeValue for DynamoDB requests, or
- // unmarshaling the dynamodb.AttributeValue back into a Go value type.
- //
- // AttributeValue Marshaling
- //
- // To marshal a Go type to a dynamodbAttributeValue you can use the Marshal
- // functions in the dynamodbattribute package. There are specialized versions
- // of these functions for collections of Attributevalue, such as maps and lists.
- //
- // The following example uses MarshalMap to convert the Record Go type to a
- // dynamodb.AttributeValue type and use the value to make a PutItem API request.
- //
- // type Record struct {
- // ID string
- // URLs []string
- // }
- //
- // //...
- //
- // r := Record{
- // ID: "ABC123",
- // URLs: []string{
- // "https://example.com/first/link",
- // "https://example.com/second/url",
- // },
- // }
- // av, err := dynamodbattribute.MarshalMap(r)
- // if err != nil {
- // panic(fmt.Sprintf("failed to DynamoDB marshal Record, %v", err))
- // }
- //
- // _, err = svc.PutItem(&dynamodb.PutItemInput{
- // TableName: aws.String(myTableName),
- // Item: av,
- // })
- // if err != nil {
- // panic(fmt.Sprintf("failed to put Record to DynamoDB, %v", err))
- // }
- //
- // AttributeValue Unmarshaling
- //
- // To unmarshal a dynamodb.AttributeValue to a Go type you can use the Unmarshal
- // functions in the dynamodbattribute package. There are specialized versions
- // of these functions for collections of Attributevalue, such as maps and lists.
- //
- // The following example will unmarshal the DynamoDB's Scan API operation. The
- // Items returned by the operation will be unmarshaled into the slice of Records
- // Go type.
- //
- // type Record struct {
- // ID string
- // URLs []string
- // }
- //
- // //...
- //
- // var records []Record
- //
- // // Use the ScanPages method to perform the scan with pagination. Use
- // // just Scan method to make the API call without pagination.
- // err := svc.ScanPages(&dynamodb.ScanInput{
- // TableName: aws.String(myTableName),
- // }, func(page *dynamodb.ScanOutput, last bool) bool {
- // recs := []Record{}
- //
- // err := dynamodbattribute.UnmarshalListOfMaps(page.Items, &recs)
- // if err != nil {
- // panic(fmt.Sprintf("failed to unmarshal Dynamodb Scan Items, %v", err))
- // }
- //
- // records = append(records, recs...)
- //
- // return true // keep paging
- // })
- //
- // The ConvertTo, ConvertToList, ConvertToMap, ConvertFrom, ConvertFromMap
- // and ConvertFromList methods have been deprecated. The Marshal and Unmarshal
- // functions should be used instead. The ConvertTo|From marshallers do not
- // support BinarySet, NumberSet, nor StringSets, and will incorrectly marshal
- // binary data fields in structs as base64 strings.
- //
- // The Marshal and Unmarshal functions correct this behavior, and removes
- // the reliance on encoding.json. `json` struct tags are still supported. In
- // addition support for a new struct tag `dynamodbav` was added. Support for
- // the json.Marshaler and json.Unmarshaler interfaces have been removed and
- // replaced with have been replaced with dynamodbattribute.Marshaler and
- // dynamodbattribute.Unmarshaler interfaces.
- //
- // The Unmarshal functions are backwards compatible with data marshalled by
- // ConvertTo*, but the reverse is not true: objects marshalled using Marshal
- // are not necessarily usable by ConvertFrom*. This backward compatibility is
- // intended to assist with incremental upgrading of data following a switch
- // away from the Convert* family of functions.
- //
- // `time.Time` is marshaled as RFC3339 format.
- package dynamodbattribute
|