func Example_marshaling(client *dynago.Client) { type MyStruct struct { Id int64 Name string Description string Tags []string Address struct { City string State string } } var data MyStruct doc := dynago.Document{ // Basic fields like numbers and strings get marshaled automatically "Id": data.Id, "Name": data.Name, "Description": data.Description, // StringSet is compatible with []string so we can simply cast it "Tags": dynago.StringSet(data.Tags), // We don't automatically marshal structs, nest it in a document "Address": dynago.Document{ "City": data.Address.City, "State": data.Address.State, }, } client.PutItem("Table", doc).Execute() }
func TestDocumentMarshalJSONDoesNotIncludeEmptyValues(t *testing.T) { doc := dynago.Document{"key1": "shows up", "key2": 9, "fields": dynago.StringSet([]string{"is", "present"}), "id": "", "name": nil, "tags": []string{}} jsonDoc, _ := doc.MarshalJSON() assert.Contains(t, string(jsonDoc), `"fields":{"SS":["is","present"]}`) assert.Contains(t, string(jsonDoc), `"key1":{"S":"shows up"}`) assert.Contains(t, string(jsonDoc), `"key2":{"N":"9"}`) }