解析dynamo db queryresponse to object

Ruk*_*iki 3 amazon-dynamodb

我正在使用DynamoDB使用以下命令查询表

QueryRequest request = new QueryRequest
{
   TableName = "Events",
   ExclusiveStartKey = startKey,
   KeyConditions = keyConditions,
   IndexName = "Title-index" // Specify the index to query against
};
// Issue request
QueryResponse result = client.Query(request);
Run Code Online (Sandbox Code Playgroud)

ExclusiveStartKey和Keyconditions是预定义的

问题是QueryResult结果变量没有解析为我的本机对象,当我使用DynamoDB.Context时,你使用期望的类型转换方法,但在这种情况下我需要解析QueryResult ...还有其他方法去做这个?或者我应该解析对象?

Lee*_*unn 20

我最终使用了类似的东西:

// Issue request
QueryResponse result = AmazonDynamoDBClient.Query(request);

var items = result.Items.FirstOrDefault();

var doc = Document.FromAttributeMap(items);

var myModel = DynamoDBContext.FromDocument<MyModelType>(doc);
Run Code Online (Sandbox Code Playgroud)

  • 这绝对应该被标记为已接受的答案!对于我认为更明显的事情,很难找到答案。请注意,与上述代码的唯一区别是 .FromDocument 是 DynamoDBContext 实例上的方法。否则,它是完美的! (3认同)

And*_*nak 0

查看使用适用于 .NET 的 AWS 开发工具包低级 API 查询表文档中的示例

在你的处理方法中

var response = client.Query(request);
var result = response.QueryResult;

foreach (Dictionary<string, AttributeValue> item in response.QueryResult.Items)
{
  // Process the result.
  PrintItem(item);
} 
Run Code Online (Sandbox Code Playgroud)

PrintItem实现

private static void PrintItem(Dictionary<string, AttributeValue> attributeList)
    {
      foreach (KeyValuePair<string, AttributeValue> kvp in attributeList)
      {
        string attributeName = kvp.Key;
        AttributeValue value = kvp.Value;

        Console.WriteLine(
            attributeName + " " +
            (value.S == null ? "" : "S=[" + value.S + "]") +
            (value.N == null ? "" : "N=[" + value.N + "]") +
            (value.SS == null ? "" : "SS=[" + string.Join(",", value.SS.ToArray()) + "]") +
            (value.NS == null ? "" : "NS=[" + string.Join(",", value.NS.ToArray()) + "]")
        );
      }
      Console.WriteLine("************************************************");
    }
Run Code Online (Sandbox Code Playgroud)