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).