es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo convertir un Json anidado a un Map en Java

Estoy tratando de leer un json anidado y convertirlo en un Mapa. Puedo analizar el json a objetos java pero no puedo convertirlos en un mapa a partir de esos objetos java.

A continuación se muestra el json:

“sources”: [
{
“database”: {
“dbConnectionId”: “TestDBConnectionId”,
“tableNames”: [
{
“tableName”: “TestTableName011”,
“keys”: [“column010, column011”]
},
{
“tableName”: “TestTableName012”,
“keys”: [“column020, column021”]
}
]
}
}
]

Objeto Java creado como sigue:

public class Sources {
private Database database;
//Getter y Setter
}

public class Database {

private String dbConnectionId;
private List<tablenames> tableNames;

//Getter y Setter
}

public class TableNames {

private String tableName;
private List<string> keys;

//Getter y Setter
}

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para convertir los objetos Java en un Map, puedes usar el siguiente código:

    ObjectMapper objectMapper = new ObjectMapper();
    Sources sources = objectMapper.readValue(jsonString, Sources.class);
    
    Map<string, object=""> sourcesMap = objectMapper.convertValue(sources, new TypeReference<><string, object="">>() {});
    
    Map<string, object=""> databaseMap = (Map<string, object="">) sourcesMap.get("database");
    String dbConnectionId = (String) databaseMap.get("dbConnectionId");
    
    List<><string, object="">> tableNamesList = (List<><string, object="">>) databaseMap.get("tableNames");
    for (Map<string, object=""> tableNameMap : tableNamesList) {
        String tableName = (String) tableNameMap.get("tableName");
        List<string> keysList = (List<string>) tableNameMap.get("keys");
        // Realizar alguna acción con tableName y keysList
    }
    

    Aquí, primero utilizamos el ObjectMapper de Jackson para deserializar la cadena de JSON en objetos Java. Luego, utilizamos el mismo ObjectMapper para convertir el objeto sources en un Map<string, object="">.

    Después, podemos recuperar el map database del sourcesMap, y obtener la cadena dbConnectionId de él.

    Finalmente, iteramos a través de tableNamesList, que contiene objetos Map<string, object=""> que representan cada entrada de nombre de tabla. Dentro del ciclo, obtenemos los valores de tableName y keys de cada entrada y hacemos algo con ellos.</string,></string,></string,></string,></string,></string,></string,></string,></string,>

Comments are closed.