. Значение печатается как Amazon.DynamoDBv2.DocumentModel.DynamoDBBool вместо «истина» или «ложь»

2

При попытке Console.Writeline вывода запроса DynamoDB (документ), я получаю "Amazon.DynamoDBv2.DocumentModel.DynamoDBBool" вместо значения "истина" или "ложь". Как напечатать правильное представление ToString() для любого заданного значения, полученного из DynamoDB, будь то строка, int или логическое значение.

foreach (var resultDocument in resultDocs)
{
    foreach (var resultDocItem in resultDocument)
    {
      printString += $",{resultDocItem.Value.ToString()}";
    }
}

Этот код печатает "Amazon.DynamoDBv2.DocumentModel.DynamoDBBool", когда булево значение указывается вместо "true" или "false"

Теги:
amazon-web-services
amazon-dynamodb

1 ответ

3
Лучший ответ

Что вы получаете из foreach - это KeyValuePair<string, DynamoDBEntry> который имеет по умолчанию ToString(). Чтобы получить строковое представление того, что вы действительно хотите, вам нужно использовать встроенные операторы приведения, чтобы вернуться к реальному значению, которое вы ищете.

Специально для DynamoDBBool это может выглядеть так:

var doc = new Document();
doc.Add("aaa", new DynamoDBBool(true));
foreach(var item in doc)
{
    var s = item.Value is DynamoDBBool ? item.Value.AsBoolean().ToString() : item.Value.ToString();
    Console.WriteLine($"{item.Key} : {s}");
}

Чтобы упростить охват всех опций, мы можем использовать тот факт, что doc - это просто документ JSON пар ключ-значение. Это переводит документ в JSON, а затем печатает правильные строковые представления каждой записи.

var doc = new Document();
doc.Add("aaa", new DynamoDBBool(true));
var dict = JsonConvert.DeserializeObject<IDictionary<string, string>>(doc.ToJson());
foreach(var item in dict)
{
    Console.WriteLine(item.Value);
}
  • 0
    Он не удовлетворяет «вывести правильное представление ToString () любого заданного значения, полученного из DynamoDB, будь то строка, либо int, либо логическое значение». Похоже, вам нужно создать длинный список типов, проверяющий каждый вариант в docs.aws.amazon.com/sdkfornet/v3/apidocs/items/DynamoDBv2/…, если в API нет другого механизма.
  • 0
    @ShortFuse Это просто для удовлетворения bool, поэтому я говорю, что вам нужно использовать встроенные операторы приведения . Это длинный список и дает мне новую идею. Будет редактировать
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню