2012-06-19 18 views
5

sólo me gustaría para crear el equivalente de mapeo Jackson de los siguientes:Crear estructura JSON simple usando Jackson

{\"isDone\": true} 

Creo que necesito para crear una clase como esta:

public class Status { 

    private boolean isDone; 

    public boolean isDone{ 
     return this.isDone; 
    } 

    public void setDone(boolean isDone){ 
     this.isDone = isDone; 
    } 
} 

Pero ¿Cómo lo instalo y luego escribo el JSON en una cadena?

Respuesta

6

Un problema con su ejemplo y Jackson son las opciones predeterminadas de los nombres de propiedades JSON: Jackson verá isDone y setDone y elija done como el nombre de la propiedad JSON. Puede anular esta opción por defecto utilizando la anotación JsonProperty:

public class Status 
{ 
    private boolean isDone; 

    @JsonProperty("isDone") 
    public boolean isDone() 
    { 
     return this.isDone; 
    } 

    @JsonProperty("isDone") 
    public void setDone(boolean isDone) 
    { 
     this.isDone = isDone; 
    } 
} 

continuación:

Status instance = new Status(); 
String jsonString = null; 

instance.setDone(true); 
ObjectMapper mapper = new ObjectMapper(); 

jsonString = mapper.writeValueAsString(instance); 

Ahora jsonString contiene { "isDone" : true }. Tenga en cuenta que también puede escribir la cadena en OutputStream usando ObjectMapper.writeValue(OutputStream, Object), o en Writer usando ObjectMapper.writeValue(Writer, Object).

En este caso, realmente solo necesita la anotación JsonProperty en cualquiera de sus accesadores, pero no en ambos. Simplemente haciendo una anotación en isDone obtendrá el nombre de la propiedad JSON que desee.

Una alternativa a usar la anotación JsonProperty es cambiar el nombre de sus accesos setIsDone/getIsDone. Entonces las anotaciones son innecesarias.

Consulte el tutorial rápido y sucio de Jackson: Jackson in 5 minutes. La comprensión de las propiedades específicas vino de mirar a través de los documentos para las anotaciones de Jackson.

+0

gracias, ¿me puede indicar en la dirección en que se explica esto? o está disperso entre los documentos? – user701254

2

Derecha. El código necesario:

ObjectMapper mapper = new ObjectMapper(); 
System.out.println(mapper.writeValueAsString(new Status())); 
Cuestiones relacionadas