github.com/aavshr/aws-sdk-go@v1.41.3/service/dynamodb/dynamodbattribute/doc.go (about) 1 // Package dynamodbattribute provides marshaling and unmarshaling utilities to 2 // convert between Go types and dynamodb.AttributeValues. 3 // 4 // These utilities allow you to marshal slices, maps, structs, and scalar values 5 // to and from dynamodb.AttributeValue. These are useful when marshaling 6 // Go value tyes to dynamodb.AttributeValue for DynamoDB requests, or 7 // unmarshaling the dynamodb.AttributeValue back into a Go value type. 8 // 9 // AttributeValue Marshaling 10 // 11 // To marshal a Go type to a dynamodbAttributeValue you can use the Marshal 12 // functions in the dynamodbattribute package. There are specialized versions 13 // of these functions for collections of Attributevalue, such as maps and lists. 14 // 15 // The following example uses MarshalMap to convert the Record Go type to a 16 // dynamodb.AttributeValue type and use the value to make a PutItem API request. 17 // 18 // type Record struct { 19 // ID string 20 // URLs []string 21 // } 22 // 23 // //... 24 // 25 // r := Record{ 26 // ID: "ABC123", 27 // URLs: []string{ 28 // "https://example.com/first/link", 29 // "https://example.com/second/url", 30 // }, 31 // } 32 // av, err := dynamodbattribute.MarshalMap(r) 33 // if err != nil { 34 // panic(fmt.Sprintf("failed to DynamoDB marshal Record, %v", err)) 35 // } 36 // 37 // _, err = svc.PutItem(&dynamodb.PutItemInput{ 38 // TableName: aws.String(myTableName), 39 // Item: av, 40 // }) 41 // if err != nil { 42 // panic(fmt.Sprintf("failed to put Record to DynamoDB, %v", err)) 43 // } 44 // 45 // AttributeValue Unmarshaling 46 // 47 // To unmarshal a dynamodb.AttributeValue to a Go type you can use the Unmarshal 48 // functions in the dynamodbattribute package. There are specialized versions 49 // of these functions for collections of Attributevalue, such as maps and lists. 50 // 51 // The following example will unmarshal the DynamoDB's Scan API operation. The 52 // Items returned by the operation will be unmarshaled into the slice of Records 53 // Go type. 54 // 55 // type Record struct { 56 // ID string 57 // URLs []string 58 // } 59 // 60 // //... 61 // 62 // var records []Record 63 // 64 // // Use the ScanPages method to perform the scan with pagination. Use 65 // // just Scan method to make the API call without pagination. 66 // err := svc.ScanPages(&dynamodb.ScanInput{ 67 // TableName: aws.String(myTableName), 68 // }, func(page *dynamodb.ScanOutput, last bool) bool { 69 // recs := []Record{} 70 // 71 // err := dynamodbattribute.UnmarshalListOfMaps(page.Items, &recs) 72 // if err != nil { 73 // panic(fmt.Sprintf("failed to unmarshal Dynamodb Scan Items, %v", err)) 74 // } 75 // 76 // records = append(records, recs...) 77 // 78 // return true // keep paging 79 // }) 80 // 81 // The ConvertTo, ConvertToList, ConvertToMap, ConvertFrom, ConvertFromMap 82 // and ConvertFromList methods have been deprecated. The Marshal and Unmarshal 83 // functions should be used instead. The ConvertTo|From marshallers do not 84 // support BinarySet, NumberSet, nor StringSets, and will incorrectly marshal 85 // binary data fields in structs as base64 strings. 86 // 87 // The Marshal and Unmarshal functions correct this behavior, and removes 88 // the reliance on encoding.json. `json` struct tags are still supported. In 89 // addition support for a new struct tag `dynamodbav` was added. Support for 90 // the json.Marshaler and json.Unmarshaler interfaces have been removed and 91 // replaced with dynamodbattribute.Marshaler and 92 // dynamodbattribute.Unmarshaler interfaces. 93 // 94 // The Unmarshal functions are backwards compatible with data marshalled by 95 // ConvertTo*, but the reverse is not true: objects marshalled using Marshal 96 // are not necessarily usable by ConvertFrom*. This backward compatibility is 97 // intended to assist with incremental upgrading of data following a switch 98 // away from the Convert* family of functions. 99 // 100 // `time.Time` is marshaled as RFC3339 format. 101 package dynamodbattribute