当尝试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);
}