如何使用Jackson创建这个json字符串?

时间:2012-09-26 03:19:17

标签: java json jackson

这是我想要的输出

{"node":{"type":"community","field_incentives":{"und":[{"value":"fun"},{"value":"nice"}]},"field_community_email":{"und":[{"value":"some@one.com"}]}}}

这是我的代码,但它似乎没有生成上面的输出。如果有更好更简单的方法,请告诉我。感谢

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();

2 个答案:

答案 0 :(得分:13)

我只是逐行写入输出json文件Reference JsonGenerator。希望它会有所帮助。

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", "some@one.com"); // "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 :(得分:1)

使用POJO
主要

public class Main {

    private Node node;

    // getters/setters  

节点

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  

持有人

public class Holder {

    private String value;

    // getters/setters  

用法

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