2012-03-06 41 views

Respuesta

35

Sí, está el json.org. Echar un vistazo a http://www.json.org/java/index.html

[editado] Imagine que tiene una clase Java simple como esto:

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; } 

} 

Así, para transformarlo en un objeto JSON, es muy simple. De esta manera:

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 que ayude.

[editado] Aquí hay otro ejemplo, en este caso utilizando Jackson: https://brunozambiazi.wordpress.com/2015/08/15/working-with-json-in-java/

+0

Thnx pero ... quiero que si tengo un Pojo, puedo pasar el objeto pojo y de esta manera la biblioteca construye el objeto JSON ... ¿puedo hacer eso? ¿Puedes darme un ejemplo? muchas cosas – Mariah

+0

@ Bruno ¿Cómo podemos obtener los valores de List o Set usando este JSONObject? –

+5

Me gusta este enfoque, desafortunadamente no funcionó para mí. Recibí el mensaje de error: "El constructor JSONObject (Person) no está definido" ... ¿alguna idea de por qué? Lo estoy llamando en algún código de Android ... es simple Java. Gracias – gnB

14

también podemos hacer uso de a continuación se indica la dependencia y el plugin en el archivo de 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 de abajo:

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> 
5

Si usted es consciente de Jackson 2, hay un gran tutorial en sobre cómo convertir objetos Java a JSON y viceversa. Los siguientes fragmentos de código se han tomado de ese tutorial.

Convertir objeto Java a 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); 

Convertir JSON a objetos 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); 

Jackson 2 Dependencia:

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.6.3</version> 
</dependency> 

Para obtener el tutorial completo, vaya al enlace anterior.

-2

Use GSON para convertir POJO en JSONObject. Refer here.

Para convertir JSONObject a POJO, simplemente llame al método setter en POJO y asigne los valores directamente desde JSONObject.

Cuestiones relacionadas