java - responsebody - ¿Cómo convertir POJO a JSON y viceversa?
spring post request body example (4)
Quiero saber si hay alguna API de Java disponible para convertir un objeto POJO en un objeto JSON y viceversa.
Sí, está el json.org. Eche un vistazo a http://www.json.org/java/index.html
[editado] Imagina que tienes una clase Java simple como esta:
public class Person {
private String name;
private Integer age;
public String getName() { return this.name; }
public void setName( String name ) { this.name = name; }
public Integer getAge() { return this.age; }
public void setAge( Integer age ) { this.age = age; }
}
Por lo tanto, para transformarlo en un objeto JSon, es muy simple. Me gusta esto:
import org.json.JSONObject;
public class JsonTest {
public static void main( String[] args ) {
Person person = new Person();
person.setName( "Person Name" );
person.setAge( 666 );
JSONObject jsonObj = new JSONObject( person );
System.out.println( jsonObj );
}
}
Espero eso ayude.
[editado] Aquí hay otro ejemplo, en este caso usando Jackson: https://brunozambiazi.wordpress.com/2015/08/15/working-with-json-in-java/
Si conoce Jackson 2 , hay un excelente tutorial en mkyong.com sobre cómo convertir objetos Java en JSON y viceversa. Los siguientes fragmentos de código se han tomado de ese tutorial.
Convierta el objeto Java en JSON, writeValue(...)
:
ObjectMapper mapper = new ObjectMapper();
Staff obj = new Staff();
//Object to JSON in file
mapper.writeValue(new File("c://file.json"), obj);
//Object to JSON in String
String jsonInString = mapper.writeValueAsString(obj);
Convierte JSON en objeto Java, readValue(...)
:
ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{''name'' : ''mkyong''}";
//JSON from file to Object
Staff obj = mapper.readValue(new File("c://file.json"), Staff.class);
//JSON from URL to Object
Staff obj = mapper.readValue(new URL("http://mkyong.com/api/staff.json"), Staff.class);
//JSON from String to Object
Staff obj = mapper.readValue(jsonInString, Staff.class);
Dependencia Jackson 2:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.3</version>
</dependency>
Para ver el tutorial completo, dirígete al enlace que aparece arriba.
También podemos hacer uso de la dependencia y el complemento a continuación dados en su archivo pom - Hago uso de maven. Con el uso de estos puede generar POJO según su esquema JSON y luego utilizar el código que se proporciona a continuación para rellenar el objeto JSON de solicitud a través del objeto src especificado como parámetro a gson.toJson (Object src) o viceversa. Mira el código a continuación:
Gson gson = new GsonBuilder().create();
String payloadStr = gson.toJson(data.getMerchant().getStakeholder_list());
Gson gson2 = new Gson();
Error expectederr = gson2.fromJson(payloadStr, Error.class);
Y la configuración de Maven:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>1.7.1</version>
</dependency>
<plugin>
<groupId>com.googlecode.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
<version>0.3.7</version>
<configuration>
<sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
<targetPackage>com.example.types</targetPackage>
</configuration>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
Use GSON para convertir POJO en JSONObject. Consulte aquí.
Para convertir JSONObject a POJO, simplemente llame al método setter en POJO y asigne los valores directamente desde JSONObject.