这是我想要的输出
{"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();
答案 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);