Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

308
Vistas
Jerarquía dinámica de varios niveles JSON a Java Pojo. Reutilización para múltiples proyectos

Tengo JSON como a continuación

 { "name" : "sahal", "address" : [ { "state" : "FL" }, { "country" : "FL", "city" : { "type" : "municipality", "value" : "California City" } }, { "pin" : "87876" } ] }

Ninguna de las claves: valor es constante. El nombre puede cambiar en cualquier momento. Y en algún momento el nombre viene como FirstName .

Probé con @JsonAnySetter y @JsonNode. Estos trabajos con una sola jerarquía

¿Alguna otra forma en que pueda hacer esto y reutilizarlo para otra estructura JSON sin escribir el Pojo para cada proyecto?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Considere usar JsonNode y fusionar un ciclo de jerarquía para extraer todas las claves y valores de forma dinámica, independientemente de los patrones, las relaciones y los valores.

 public static void main(String[] args) throws JsonProcessingException { //which hierarchy is your json object JsonNode node = nodeGenerator(hierarchy); JSONObject flat = new JSONObject(); node.fields().forEachRemaining(o -> { if (!o.getValue().isContainerNode()) flat.put(o.getKey(), o.getValue()); else { parser(o.getValue(), flat); } }); System.out.println(flat); System.out.println(flat.get("type")); } public static JsonNode nodeGenerator(JSONObject input) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); return mapper.readTree(input.toString()); } public static void parser(JsonNode node, JSONObject flat) { if (node.isArray()) { ArrayNode array = node.deepCopy(); array.forEach(u -> u.fields().forEachRemaining(o -> { if (!o.getValue().isContainerNode()) flat.put(o.getKey(), o.getValue()); else { parser(o.getValue(), flat); } })); } else { node.fields().forEachRemaining(o -> flat.put(o.getKey(), o.getValue())); } }

Que en su caso extrajo json será el siguiente: ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda