2

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

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

当命中布尔值而不是“真”或“假”时,此代码将打印“Amazon.DynamoDBv2.DocumentModel.DynamoDBBool”

4

1 回答 1

3

您从中得到的foreachKeyValuePair<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为了更轻松地涵盖所有选项,我们可以使用 a只是键值对的 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);
}
于 2019-02-07T15:57:42.473 回答