2012-09-26 17 views
8

Ecco la mia uscita desideratoCome creare questa stringa json usando Jackson?

{"node":{"type":"community","field_incentives":{"und":[{"value":"fun"},{"value":"nice"}]},"field_community_email":{"und":[{"value":"[email protected]"}]}}} 

Ecco il mio codice, ma non sembra per generare l'output sopra. Se c'è un modo migliore e più semplice per farlo, per favore fatemelo sapere. Grazie

ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
JsonFactory f = new JsonFactory(); 
JsonGenerator g = f.createJsonGenerator(outputStream); 
g.writeStartObject(); 
g.writeObjectFieldStart("node"); 
g.writeStringField("type", "community"); 
g.writeObjectFieldStart("field_incentives"); 
g.writeFieldName("und"); 
g.writeStartArray(); 
???I don't know how to make [{"value":"fun"},{"value":"nice"}] 
g.writeEndArray(); 
g.writeEndObject(); 
g.close(); 
+0

Perché non scrivi semplicemente la stringa JSON? –

+0

Stai sbagliando. O scrivi la stringa da solo, oppure usa un POJO e serializza usando Jackson. – Nishant

+7

Non sono d'accordo con Nishant. Questo ha senso solo se stai serializzando oggetti di dominio già esistenti. Perché dovresti creare una nuova gerarchia di tipi solo per pompare un po 'di JSON ?? –

risposta

1

Uso POJO
principale

public class Main { 

    private Node node; 

    // getters/setters 

Nodo

public class Node { 

    private String type; 

    private FieldIncentives field_incentives; 

    private FieldIncentives field_community_email; 

    // getters/setters 

FieldIncentives

public class FieldIncentives { 

    private List<Holder> und; 

    // getters/setters 

Holder

public class Holder { 

    private String value; 

    // getters/setters 

Uso

final ObjectMapper o = new ObjectMapper(); 
final Main m = o.readValue(new File("exampleJson.json"), Main.class); 
9

ho semplicemente scritto riga per riga per l'output di file JSON Reference JsonGenerator. Spero che ti sarà d'aiuto.

import java.io.File; 
import java.io.IOException; 
import org.codehaus.jackson.JsonEncoding; 
import org.codehaus.jackson.JsonFactory; 
import org.codehaus.jackson.JsonGenerationException; 
import org.codehaus.jackson.JsonGenerator; 
import org.codehaus.jackson.map.JsonMappingException; 

public class CopyOfJacksonStreamExample { 
    public static void main(String[] args) { 

    try { 

    JsonFactory jfactory = new JsonFactory(); 

    /*** write to file ***/ 
    JsonGenerator jGenerator = jfactory.createJsonGenerator(new File(
      "c:\\user.json"), JsonEncoding.UTF8); 
    jGenerator.writeStartObject(); // { 

    jGenerator.writeObjectFieldStart("node"); // node: { 
    jGenerator.writeStringField("type", "community"); // "type" : "community" 

    jGenerator.writeObjectFieldStart("field_incentives"); // "field_incentives" : { 
    jGenerator.writeFieldName("und"); // "und" : 
    jGenerator.writeStartArray(); // [ 
    jGenerator.writeStartObject(); // { 
    jGenerator.writeStringField("value", "fun"); // "value" : "fun" 
    jGenerator.writeStringField("value", "nice"); // "value" : "nice" 
    jGenerator.writeEndObject(); // } 
    jGenerator.writeEndArray(); // ] 
    jGenerator.writeEndObject(); // } end of field_incentives 

    jGenerator.writeObjectFieldStart("field_community_email"); // "field_community_email" : { 
    jGenerator.writeFieldName("und"); // "und" : 
    jGenerator.writeStartArray(); // [ 
    jGenerator.writeStartObject(); // { 
    jGenerator.writeStringField("value", "[email protected]"); // "value" : "fun" 
    jGenerator.writeEndObject(); // } 
    jGenerator.writeEndArray(); // ] 
    jGenerator.writeEndObject(); // } end of field_community_email 

    jGenerator.writeEndObject(); // } end of node 
    jGenerator.writeEndObject(); // } 

    jGenerator.close(); 

    } catch (JsonGenerationException e) { 

    e.printStackTrace(); 

    } catch (JsonMappingException e) { 

    e.printStackTrace(); 

    } catch (IOException e) { 

    e.printStackTrace(); 

    } 

    } 

} 
+1

Grazie a tutti per il vostro aiuto – Andy

+3

@Andy considera di accettare la risposta se risolve il tuo problema. – ssedano

+2

@Andy questa risposta ha risolto il tuo problema? Se è così, accettalo per favore – Matheus

Problemi correlati