2012-09-26 31 views
8

İşte İşte benim kod ama yukarıdaki çıktıyı üretmek için görünmüyor benim istenen çıkışJackson kullanarak bu json dizisi nasıl oluşturulur?

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

bu. Bunu yapmak için daha iyi ve daha basit bir yol varsa, lütfen bana bildirin. Teşekkür

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

Neden JSON dizesini yazmıyorsunuz? –

+0

Yanlış yapıyorsunuz. Ya sadece String'i kendiniz yazın ya da bir POJO kullanın ve Jackson kullanarak serileştirin. – Nishant

+7

Nishant ile katılmıyorum. Bu zaten varolan etki alanı nesnelerini serileştirirseniz mantıklıdır. Neden sadece JSON pompalamak için yeni bir tür hiyerarşi oluşturursunuz ?? –

cevap

1

kullanma POJOs
Ana

public class Main { 

    private Node node; 

    // getters/setters 

Düğüm

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 

Tutucu

public class Holder { 

    private String value; 

    // getters/setters 

Kullanımı

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

Ben sadece çıkış json dosyası Reference JsonGenerator için satır satır yazın. Umarım yardımcı olur.

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

Yardımlarınız için hepinize teşekkürler – Andy

+3

@Ve sorununuzu çözdüyse cevabı kabul etmeyi düşünün. – ssedano

+2

@Ve bu cevap sorununuzu çözdü mü? Eğer öyleyse, kabul et lütfen – Matheus