尝试进行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”
答案 0 :(得分: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);
}