У меня есть приложение ASP.Net Core 2.1
, которое использует DynamoDb
в качестве Db (NoSql)
DTO
public class CustomerTO
{
public string Id{get; set;}
public string Name {get; set;}
public IList<Contact> Contacts {get; set;}
}
public class Contact
{
public string Number {get; set;}
public string Address { get; set;}
}
Я использую API низкого уровня для DynamoDb
CRUD.Вот как мой метод выглядит как
public async Task<CustomerTO> Add(CustomerTO obj)
{
try
{
var res = await _dynamoClient.PutItemAsync(tableName: _tableName, item: SetObject(obj));
if (res.HttpStatusCode == System.Net.HttpStatusCode.OK)
{
return obj;
}
else
{
//throw new Exception("Error" + res);
}
}
catch (Exception ex)
{
Logger.Log(ex);
return null;
}
}
private Dictionary<string, AttributeValue> SetObject(CustomerTO obj)
{
//DynamoDb - Using Low Level API
var attributes = new Dictionary<string,
AttributeValue> {
//Id
{
nameof(obj.Id),
new AttributeValue {
S = obj.Id
}
},
//Name
{
nameof(obj.Name),
new AttributeValue {
S = obj.Name
}
},
{
nameof(obj.Contacts),
new AttributeValue
{
S = JsonConvert.SerializeObject(obj.Contacts)
}
}
};
//attributes[nameof(obj.Contacts)] = Document.FromJson(obj.Contacts);
return attributes;
}
Это сохраняет поля «Контакты» в виде строки с escape-символами в виде
[\r\n {\r\n \"Number\": \"a6e8003e-3991-4f0c-a47f-49b26d6d83c0\",\r\n \"Address\": \"Free\"}]
Поскольку я передаю в виде строки, настолько очевидно, что это будетсохранить как строку.
Но как мне преобразовать эти контакты в поля, чтобы они сохранялись в виде строки Array
, List (L)
или JSON
без escape-символов?
Спасибо!