How to Write JSON Array to CSV File using Java?
Last Updated :
09 May, 2022
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:
- 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
import java.io.*;
import java.nio.file.*;
import org.apache.commons.io.FileUtils;
import org.json.*;
public class GFG {
@SuppressWarnings ( "deprecation" )
public static void main(String args[])
{
String jsonString;
JSONObject jsonObject;
try {
jsonString = new String(
Files.readAllBytes(Paths.get( "file.json" )));
jsonObject = new JSONObject(jsonString);
JSONArray docs
= jsonObject.getJSONArray( "test" );
File file = new File( "C:\\Test.csv" );
String csvString = CDL.toString(docs);
FileUtils.writeStringToFile(file, csvString);
}
catch (Exception e) {
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
Share your thoughts in the comments
Please Login to comment...