Open In App

How to Write JSON Array to CSV File using Java?

Last Updated : 09 May, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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.

Get the latest Maven dependency

B. Apache Commons IO:  The FileUtils Class from Apache Commons IO is used to manipulate files which is moving, writing, and reading files.

Get the latest Maven dependency

<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: 

  1. Reading the JSON file and storing the result as a string.
  2. Construct a JSONObject using the above string.
  3. Fetch the JSON Array from the JSON Object.
  4. Create a new CSV file using java.io.File.
  5. 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:

Output Image



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads