Using streaming APIs to generate JSON

You can use javax.json.stream.JsonGenerator to write JSON data to an output source as a stream of tokens. This approach does not keep the content in memory throughout the process. Once a name-value pair is written to the stream, the content used for wiring the name-value pair will be discarded from the memory.

JsonGenerator has support for writing both the JSON object and the JSON array. You can use the writeStartObject() method to generate the JSON object and then add the name-value pairs with the write() method. To finish the object representation, call writeEnd().

To generate the JSON arrays, call the writeStartArray() method and then, add values with the write() method. To finish the array representation, call writeEnd(), which writes the end of the current context.

The following example illustrates the use of streaming APIs for converting an array of employee objects into a JSON string:

//Other imports are removed for brevity 
import javax.json.stream.JsonGenerator;
import com.packtpub.rest.ch2.model.DateUtil;

//Get the employee list that needs to be converted to JSON
List<Employee> employees = getEmployeeList();
//Create file output stream for writing data to a File
OutputStream outputStream = new FileOutputStream(
"emp-array.json");
//Generates JsonGenerator which converts data to JSON
JsonGenerator jsonGenerator = Json.createGenerator(outputStream);
// Writes the JSON 'start array' character : [
jsonGenerator.writeStartArray();
for(Employee employee : employees) {
// Writes the JSON object for each Employee object
jsonGenerator.writeStartObject()
.write("employeeId", employee.getEmployeeId())
.write("firstName", employee.getFirstName())
.write("lastName", employee.getLastName())
.write("email", employee.getEmail())
.write("hireDate",DateUtil.getDate(employee.getHireDate()))
.writeEnd();

}
// Writes the end of the current context(array).
jsonGenerator.writeEnd();

The use of the JsonGenerator class is very straightforward. Therefore, we are not going to discuss the methods in detail here.

With this, we are ending our discussion on JSR 353 – Java API for JSON processing. In the next section, we will discuss Jackson, which is another popular framework available in the industry for processing JSON.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.143.254.90