Reputation: 195
Here's my desired output
{"node":{"type":"community","field_incentives":{"und":[{"value":"fun"},{"value":"nice"}]},"field_community_email":{"und":[{"value":"[email protected]"}]}}}
Here's my code but it does not seem to generate the output above. If there's a better and simpler way to do this, please let me know. Thanks
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();
Upvotes: 10
Views: 12169
Reputation: 5946
I simply write line by line to your output json file Reference JsonGenerator. Hope it will help.
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();
}
}
}
Upvotes: 15
Reputation: 29703
Using POJOs
Main
public class Main {
private Node node;
// getters/setters
Node
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
Usage
final ObjectMapper o = new ObjectMapper();
final Main m = o.readValue(new File("exampleJson.json"), Main.class);
Upvotes: 1