Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create this json string using Jackson?

Tags:

java

json

jackson

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();
like image 600
Andy Avatar asked Sep 26 '12 03:09

Andy


People also ask

How do I create a JSON string?

To create a JSON string in JavaScript, you can use the JSON. stringify(value, replacer, space) method. The JSON. stringify() method serializes (converts to string) objects, arrays, or primitive values ​​into a JSON string.

How does Jackson build JSON?

We can create a JSON in the Jackson library using the JsonNodeFactory, it can specify the methods for getting access to Node instances as well as the basic implementation of the methods. We can use the set() and put() methods of ObjectNode class to populate the data.


2 Answers

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

     }

   }

}
like image 75
swemon Avatar answered Oct 09 '22 18:10

swemon


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);
like image 1
Ilya Avatar answered Oct 09 '22 17:10

Ilya