当尝试Console.Writeline DynamoDB查询(文档)的输出时,我得到的是“ Amazon.DynamoDBv2.DocumentModel.DynamoDBBool”,而不是“ true”或“ False”值。如何打印来自DynamoDB的任何给定值的正确ToString()表示形式,无论其是字符串还是int或boolean。

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


当命中布尔值而不是'true'或'false'时,此代码将显示“ Amazon.DynamoDBv2.DocumentModel.DynamoDBBool”

最佳答案

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);
}

10-01 15:26