He consultado con éxito un conjunto de datos de DynamoDB y devolví el último elemento asociado con la clave principal. Los datos del artículo consisten en lo siguiente:
`{ "machineID": { "N": "1322" }, "ts": { "N": "1646299793339" }, "data": { "M": { "average-speed": { "N": "0" }, "in-machine-mode": { "N": "0" }, "run-speed": { "N": "40" }, "total-packs-life": { "N": "0" }, "recipe-loaded-id": { "N": "1" }, "total-packs-shift": { "N": "0" }, "message-banner": { "N": "0" }, "ts": { "N": "1646299793339" } } } }`Quiero extraer los valores del mapa en formato JSON pero no puedo encontrar instrucciones/tutoriales sobre cómo se logra esto.
Aquí está el código básico para consultar y extraer el último registro relacionado con un número de máquina.
`var response = await client.QueryAsync(request); var result = response.Items; foreach(Dictionary<string, AttributeValue> item in result) { foreach(KeyValuePair<string, AttributeValue> kvp in item ) { var attribute = kvp.Key; var value = kvp.Value; Console.WriteLine(attribute + " " + (value.N == null ? "" : value.N)); } }`La salida es la siguiente: ts 1646299793339 machineID 1322 datos
¿Cómo obtengo el atributo M? Agradecería ayuda para resolver mi entendimiento.
Véase más arriba para las pruebas
Después de pasar algún tiempo buscando una respuesta y en el proceso de aprender más sobre cómo funciona dyanamoDB, ahora tengo una solución que funciona.
Esencial Necesitaba convertir el par clave-valor del atributo de la consulta en un documento.
Conseguido usando:
var response = await dynamoDBClient.QueryAsync(request); var attributes = response.Items.FirstOrDefault(); var doc = Document.FromAttributeMap(attributes);De esto es un caso simple de convertir doc a un objeto JSON
Console.WriteLine(doc.ToJson());¿Quizás hay otra manera? Comentarios apreciados.