We will see how to read a JSONArray from a JSON file and write the contents to a CSV file using Java. JavaScript Object Notation (JSON) is a standard text-based format for representing structured data that is based on JavaScript object syntax. It is commonly used for transmitting data in web applications (e.g., sending some data from the server to the client, so it can be displayed on a web page, or vice versa). This JSON in many scenarios is an array of objects, and thus, converting it to CSV makes it easily readable and comprehendible by people from all backgrounds. Let us take a deeper dive into how this can be achieved using Java. CDL (Comma Delimited List) Class from the package org.json is used here. This provides static methods to convert comma delimited text into a JSONArray and to convert a JSONArray into comma-delimited text.
Let us start by adding the following dependencies to our project:
A. The JSON library contains Java classes for parsing and converting between JSON and XML, HTTP headers, Cookies, Comma Delimited Lists, and Text, among other formats.
B. Apache Commons IO: The FileUtils Class from Apache Commons IO is used to manipulate files which is moving, writing, and reading files.
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20180813</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.8.0</version> </dependency>
Procedure:
It is illustrated below step-by-step as shown below as follows:
- Reading the JSON file and storing the result as a string.
- Construct a JSONObject using the above string.
- Fetch the JSON Array from the JSON Object.
- Create a new CSV file using java.io.File.
- Produce a comma delimited text from the JSONArray of JSONObjects and write it to the newly created CSV file.
Sample JSON file content
{ "test": [ { "name": "Test User1", "age": 22, "role": "Developer" }, { "name": "Test User2", "age": 40, "role": "Analyst" }, { "name": "Test User3", "age": 20, "role": "Intern" } ] }
Implementation:
Input: In the current implementation there is no input needed. Make sure the path to the JSON file is correct.
Example
Java
// Java Program to Write Contents of JSONArray to a CSV File // Importing required classes import java.io.*; import java.nio.file.*; import org.apache.commons.io.FileUtils; import org.json.*; // Main class // To read JSON file and write the contents of // JSONArray to CSV file public class GFG { // Main driver method @SuppressWarnings ( "deprecation" ) public static void main(String args[]) { // Class data members String jsonString; JSONObject jsonObject; // Try block to check for exceptions try { // Step 1: Reading the contents of the JSON file // using readAllBytes() method and // storing the result in a string jsonString = new String( Files.readAllBytes(Paths.get( "file.json" ))); // Step 2: Construct a JSONObject using above // string jsonObject = new JSONObject(jsonString); // Step 3: Fetching the JSON Array test // from the JSON Object JSONArray docs = jsonObject.getJSONArray( "test" ); // Step 4: Create a new CSV file using // the package java.io.File File file = new File( "C:\\Test.csv" ); // Step 5: Produce a comma delimited text from // the JSONArray of JSONObjects // and write the string to the newly created CSV // file String csvString = CDL.toString(docs); FileUtils.writeStringToFile(file, csvString); } // Catch block to handle exceptions catch (Exception e) { // Display exceptions on console with line // number using printStackTrace() method e.printStackTrace(); } } } |
Sample Output: The contents of the Sample JSONArray are now correctly displayed in the file which is as displayed in the below image as follows: