Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

306
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!