1package attributevalue_test 2 3import ( 4 "fmt" 5 "reflect" 6 7 "github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue" 8 "github.com/aws/aws-sdk-go-v2/internal/awsutil" 9 "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" 10) 11 12func ExampleMarshal() { 13 type Record struct { 14 Bytes []byte 15 MyField string 16 Letters []string 17 Numbers []int 18 } 19 20 r := Record{ 21 Bytes: []byte{48, 49}, 22 MyField: "MyFieldValue", 23 Letters: []string{"a", "b", "c", "d"}, 24 Numbers: []int{1, 2, 3}, 25 } 26 av, err := attributevalue.Marshal(r) 27 m := av.(*types.AttributeValueMemberM) 28 fmt.Println("err", err) 29 fmt.Println("Bytes", awsutil.Prettify(m.Value["Bytes"])) 30 fmt.Println("MyField", awsutil.Prettify(m.Value["MyField"])) 31 fmt.Println("Letters", awsutil.Prettify(m.Value["Letters"])) 32 fmt.Println("Numbers", awsutil.Prettify(m.Value["Numbers"])) 33 34 // output: 35 // err <nil> 36 // Bytes &{ 37 // Value: <binary> len 2 38 // } 39 // MyField &{ 40 // Value: "MyFieldValue" 41 // } 42 // Letters &{ 43 // Value: [ 44 // &{ 45 // Value: "a" 46 // }, 47 // &{ 48 // Value: "b" 49 // }, 50 // &{ 51 // Value: "c" 52 // }, 53 // &{ 54 // Value: "d" 55 // } 56 // ] 57 // } 58 // Numbers &{ 59 // Value: [ 60 // &{ 61 // Value: "1" 62 // }, 63 // &{ 64 // Value: "2" 65 // }, 66 // &{ 67 // Value: "3" 68 // } 69 // ] 70 // } 71} 72 73func ExampleUnmarshal() { 74 type Record struct { 75 Bytes []byte 76 MyField string 77 Letters []string 78 A2Num map[string]int 79 } 80 81 expect := Record{ 82 Bytes: []byte{48, 49}, 83 MyField: "MyFieldValue", 84 Letters: []string{"a", "b", "c", "d"}, 85 A2Num: map[string]int{"a": 1, "b": 2, "c": 3}, 86 } 87 88 av := &types.AttributeValueMemberM{ 89 Value: map[string]types.AttributeValue{ 90 "Bytes": &types.AttributeValueMemberB{Value: []byte{48, 49}}, 91 "MyField": &types.AttributeValueMemberS{Value: "MyFieldValue"}, 92 "Letters": &types.AttributeValueMemberL{Value: []types.AttributeValue{ 93 &types.AttributeValueMemberS{Value: "a"}, 94 &types.AttributeValueMemberS{Value: "b"}, 95 &types.AttributeValueMemberS{Value: "c"}, 96 &types.AttributeValueMemberS{Value: "d"}, 97 }}, 98 "A2Num": &types.AttributeValueMemberM{Value: map[string]types.AttributeValue{ 99 "a": &types.AttributeValueMemberN{Value: "1"}, 100 "b": &types.AttributeValueMemberN{Value: "2"}, 101 "c": &types.AttributeValueMemberN{Value: "3"}, 102 }}, 103 }, 104 } 105 106 actual := Record{} 107 err := attributevalue.Unmarshal(av, &actual) 108 fmt.Println(err, reflect.DeepEqual(expect, actual)) 109 110 // Output: 111 // <nil> true 112} 113