Writing JSON Data using JsonWriter

This post explains how to write json data to a file using JsonWriter. With JsonWriter we dont need to build the entire object in memory. The code explains how to write the below json data


[
        {
                "id": 1,
                "text": "text1",
                "array": null
        },
        {
                "id": 2,
                "text": "text2!",
                "array": [
                        50.454722,
                        -104.606667
                ]
        }
]

The json data shows we are creating an array of two objects. Each object has 3 properties id, text, and array.

Below is the complete java code

Main Code


1  import java.io.File;
2  import java.io.FileWriter;
3  import java.io.IOException;
4  
5  import com.google.gson.stream.JsonWriter;
6  
7  public class GsonDemo4 {
8   public static void main(String[] args) throws IOException {
9       File file = new File("jsondata1.json");
10      FileWriter fw = new FileWriter(file);
11      JsonWriter jw = new JsonWriter(fw);
12      jw.setIndent("        ");
13      jw.beginArray();
14          jw.beginObject();
15              jw.name("id").value(1);
16              jw.name("text").value("text1");
17              jw.name("array").nullValue();
18          jw.endObject();
19          jw.beginObject();
20              jw.name("id").value(2);
21              jw.name("text").value("text2!");
22              jw.name("array");
23              jw.beginArray();
24                  jw.value(50.454722);
25                  jw.value(-104.606667);
26              jw.endArray();
27          jw.endObject();
28      jw.endArray();
29      jw.close();
30  }
31 }

In the above code, at line 12, I set the indentation string to be repeated for each level of indentation.

At line 13, beginArray method marks the start of the array and sends “[” character to the output. This has to accompained by corresponding endArray method (refer to line 28). The endArray method marks the end of the array and sends “]” character to output.

At line 14 and 19, we mark the beginning of the object by calling the method beginObject. This will send “{” to the output. This has to be accompained by corresponding
endObject method (refer to line 18 and 27). The endObject method marks the end of the object and sends “}” to the output.

Next we add properties of the object by using name method (used to set property name) and value method (used to set property value).


Check these products on Amazon
Advertisements

Leave a Reply