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

375
Views
Devuelve parte de JSON al objeto Spring boot

Tengo una estructura JSON que dice así

 { "name":"John", "age":27, "company":{ "company_name":"ACME LLC", "address": "1st Street", "country": "US" } }

Sé que si quiero asignar esto a un objeto Java, necesito algún tipo de asignador y lo he hecho.

Mi pregunta es: ¿hay alguna manera de mapear solo una parte de este json en object. Me gustaría mapear solo la parte de la company de json en el objeto. Una cosa más, estoy usando Java 11 con Spring Boot y tengo acceso al mapeador de objetos de Jackson.

Editar: también, si hay una forma de navegar a este objeto, estaría bien. Por ejemplo $.company

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Creo que la forma más fácil es crear dos clases modelo. Primero con un campo:

 @Data public class Model { private Company company; }

y segundo:

 @Data public class Company { @JsonProperty("company_name") private String companyName; private String address; private String country; }

Entonces puedes usar el mapeador de Jackson. No necesita mencionar los campos "mapa" y "edad" en la clase Modelo.

over 4 years ago · Santiago Trujillo Report

0

Ok, encontré una respuesta, gracias @Jakub por tu respuesta, fue de gran ayuda. Enlace para comentar .

Este es un ejemplo de código de respuesta basado en mi pregunta:

 public class Company { private String name; private String address; private String country; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } }

Método de prueba/ejecución:

 @Test public void testJSON() throws JsonProcessingException { JsonNode productNode = objectMapper.readTree("{\n" + " \"name\":\"John\",\n" + " \"age\":27,\n" + " \"company\":{\n" + " \"name\":\"ACME LLC\",\n" + " \"address\": \"1st Street\",\n" + " \"country\": \"US\"\n" + " }\n" + "}"); Company company = objectMapper.readValue(productNode.get("company").toString(), Company.class); System.out.println(company.getAddress()); }
over 4 years ago · Santiago Trujillo Report

0

Sugeriría usar la biblioteca DSM .

defina su asignación en el archivo yaml, solo desea el campo de la empresa. Entonces su archivo de mapeo será como a continuación.

 result: type: object path: /company fields: name: # read value from field in path path: company_name address: #field name is the same country:

Código Java para leer el archivo:

 DSM dsm=new DSMBuilder(new File("path/to/mapping.yaml")).create(); Map<String,Object> result= ( Map<String,Object>)dsm.toObject(jsonData);

el resultado es un mapa que contiene información en el campo de la empresa en json.

Si desea obtener directamente una instancia de la clase mediante la deserialización:

 public class Company{ String name; String address; String country; }

Código Java para deserializar:

 DSM dsm=new DSMBuilder(new File("path/to/mapping.yaml")).create(); Company result= dsm.toObject(jsonData,Company.class);
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!