Saltar al contenido

Conversión de JSON de DynamoDB a JSON estándar con Java

Posteriormente a consultar con especialistas en el tema, programadores de deferentes áreas y profesores dimos con la respuesta al dilema y la compartimos en este post.

Solución:

Puede usar la clase ItemUtils en aws sdk. A continuación se muestra un código de muestra usando Kotlin:

import com.amazonaws.services.dynamodbv2.document.ItemUtils
import com.amazonaws.services.dynamodbv2.model.AttributeValue

fun main(args: Array) 
    val data = HashMap()
    data.put("hello",AttributeValue().withS("world"))
    println(data.toString())
    println(ItemUtils.toItem(data).toJSON())

Producción:

hello=S: world,
"hello":"world"

A continuación se muestra el código completo para la conversión de Dynamo JSON a JSON estándar:

import com.amazonaws.services.dynamodbv2.document.Item;
import com.amazonaws.services.dynamodbv2.document.internal.InternalUtils;
import com.amazonaws.services.dynamodbv2.model.AttributeValue;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent.DynamodbStreamRecord;
import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Main Lambda class to receive event stream, parse it to Survey
 * and process them.
 */
public class SurveyEventProcessor implements
        RequestHandler 

    private static final String INSERT = "INSERT";

    private static final String MODIFY = "MODIFY";

    public String handleRequest(DynamodbEvent ddbEvent, Context context) 

        List listOfItem = new ArrayList<>();
        List> listOfMaps = null;
        for (DynamodbStreamRecord record : ddbEvent.getRecords()) 

            if (INSERT.equals(record.getEventName()) 


        return "Successfully processed " + ddbEvent.getRecords().size() + " records.";
    
 

La siguiente es una solución simple que se puede aplicar para convertir cualquier DynamoDB Json a Simple JSON.

//passing the reponse.getItems() 
public static Object getJson(List> mapList) 
    List finalJson= new ArrayList();
    for(Map eachEntry : mapList) 
        finalJson.add(mapToJson(eachEntry));
    
    return finalJson;



//if the map is null then it add the key and value(string) in the finalKeyValueMap
public static Map mapToJson(Map keyValueMap)
    Map finalKeyValueMap = new HashMap();
    for(Map.Entry entry : keyValueMap.entrySet()) 
    
        if(entry.getValue().getM() == null) 
            finalKeyValueMap.put(entry.getKey(),entry.getValue().getS());
        
        else 
            finalKeyValueMap.put(entry.getKey(),mapToJson(entry.getValue().getM()));
        
    
    return finalKeyValueMap;


Esto producirá su Json deseado en forma de List>. Luego, usando Gson, puede convertirlo al formato Json.

Gson gson = new Gson();
String jsonString = gson.toJson(getJson(response.getItems()));

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Respuestas a preguntas comunes sobre programacion y tecnología