org.json.CDL: Convert between Java JSONArray and CSV
April 24, 2023
On this page, we will learn to convert JSONArray
into CSV and CSV to JSONArray
using org.json.CDL
class.
1. The
org.json.CDL
provides static methods to convert comma-separated values into a JSONArray
, and to convert a JSONArray
into comma-separated values.
2. CSV is comma-separated values that is a popular format for data interchange. CSV is useful in most database, spreadsheet, and organizer programs for data interchange.
3. The rule for
CDL
is that each row of text represents a row in a table or a data record. Each row ends with NEWLINE (\n) character. Each row contains one or more values separated by commas. A value can contain any character except comma, unless is wrapped in single quotes or double quotes.
4. A comma delimited list can be converted into a
JSONArray
of JSONObject
. We need to use first row of text for names to assign names in JSONObject
.
5. The
CDL
class has following static methods.
rowToJSONArray(JSONTokener x) rowToJSONObject( JSONArray names, JSONTokener x) rowToString(JSONArray ja) toJSONArray(JSONArray names, JSONTokener x) toJSONArray(JSONArray names, String string) toJSONArray(JSONTokener x) toJSONArray(String string) toString(JSONArray ja) toString(JSONArray names, JSONArray ja)
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20230227</version> </dependency>
On this page, we will discuss each and every static method of
org.json.CDL
in detail with examples.
Contents
1. rowToJSONArray() - String to JSONArray
static JSONArray rowToJSONArray(JSONTokener x) throws JSONException
JSONArray
of strings from a row of comma delimited values. A JSONTokener
takes a source string and extracts characters and tokens from it.
Example:
JSONArray jarray1 = CDL.rowToJSONArray(new JSONTokener("Krishna, Mohit, Mahesh, Shiva")); System.out.println(jarray1); JSONArray jarray2 = CDL.rowToJSONArray(new JSONTokener("@Krishna, Mohit-Sharma, Mahesh Singh, 'Shiva, India'")); System.out.println(jarray2);
["Krishna","Mohit","Mahesh","Shiva"] ["@Krishna","Mohit-Sharma","Mahesh Singh","Shiva, India"]
rowToJSONArray
works for CSV of a single row. It means a string with comma separated is considered to be converted into JSONArray
. If rowToJSONArray
finds NEWLINE (\n) in string, rowToJSONArray
ends reading further data because rowToJSONArray
considers only one row. If the value contains comma character then that value should be quoted.
2. rowToJSONObject() - String to JSONObject
static JSONObject rowToJSONObject( JSONArray names, JSONTokener x) throws JSONException
JSONObject
. The values are taken from a row of comma delimited text as JSONTokener
and names are taken from JSONArray
.
Example:
JSONArray jsonArray = CDL.rowToJSONArray(new JSONTokener("name, age, city")); JSONObject jsonObj1 = CDL.rowToJSONObject(jsonArray, new JSONTokener("Krishna, 20, Varanasi")); System.out.println(jsonObj1); JSONObject jsonObj2 = CDL.rowToJSONObject(jsonArray, new JSONTokener("@Mahesh, 30, 'Noida, UP'")); System.out.println(jsonObj2);
{"name":"Krishna","city":"Varanasi","age":"20"} {"name":"@Mahesh","city":"Noida, UP","age":"30"}
3. rowToString() and toString() - JSONArray to String
(a)static String rowToString(JSONArray ja)
JSONArray
. Values containing comma character will be quoted.
Example:
JSONArray jsonArray1 = new JSONArray(List.of("USA", "France", "India")); String csv1 = CDL.rowToString(jsonArray1); System.out.println(csv1); JSONArray jsonArray2 = new JSONArray(List.of("Varanasi, UP", "New Delhi", "@Noida")); String csv2 = CDL.rowToString(jsonArray2); System.out.println(csv2);
USA,France,India "Varanasi, UP",New Delhi,@Noida
static String toString(JSONArray ja) throws JSONException
JSONArray
of JSONObject
. In the output string, the first line is names obtained by inspecting the first JSONObject
in the given JSONArray
.
Example:
Map<String, String> map1 = new HashMap<>(); map1.put("name", "Mohit"); map1.put("age", "20"); map1.put("city", "Varanasi"); Map<String, String> map2 = new HashMap<>(); map2.put("name", "Shiva"); map2.put("age", "30"); map2.put("city", "Chennai"); JSONArray jsonArray = new JSONArray(); jsonArray.put(map1); jsonArray.put(map2); System.out.println(jsonArray); System.out.println("\n---Using CDL.toString(JSONArray ja)---"); String csv = CDL.toString(jsonArray); System.out.println(csv);
[{"name":"Mohit","city":"Varanasi","age":"20"},{"name":"Shiva","city":"Chennai","age":"30"}] ---Using CDL.toString(JSONArray ja)--- name,city,age Mohit,Varanasi,20 Shiva,Chennai,30
toString(JSONArray ja)
method, find its definition code from org.json.CDL
doc.
public static String toString(JSONArray ja) throws JSONException { JSONObject jo = ja.optJSONObject(0); if (jo != null) { JSONArray names = jo.names(); if (names != null) { return rowToString(names) + toString(names, ja); } } return null; }
static String toString(JSONArray names, JSONArray ja) throws JSONException
JSONArray
of JSONObjects
using a provided list of names. The list of names will not be included in the string output.
Example:
Map<String, String> map1 = new HashMap<>(); map1.put("id", "100"); map1.put("username", "Mohit"); map1.put("city", "Varanasi"); Map<String, String> map2 = new HashMap<>(); map2.put("id", "101"); map2.put("username", "Shiva"); map2.put("city", "Chennai"); JSONArray jsonArray = new JSONArray(); jsonArray.put(map1); jsonArray.put(map2); System.out.println(jsonArray); System.out.println("\n---Using CDL.toString(JSONArray ja)---"); JSONArray jsonArrayNames = CDL.rowToJSONArray(new JSONTokener("id, username, city")); String csv = CDL.toString(jsonArrayNames, jsonArray); System.out.println(csv); System.out.println("\n---With selected names---"); JSONArray selectedNames = CDL.rowToJSONArray(new JSONTokener("id, city")); csv = CDL.toString(selectedNames, jsonArray); System.out.println(csv);
[{"city":"Varanasi","id":"100","username":"Mohit"},{"city":"Chennai","id":"101","username":"Shiva"}] ---Using CDL.toString(JSONArray ja)--- 100,Mohit,Varanasi 101,Shiva,Chennai ---With selected names--- 100,Varanasi 101,Chennai
4. toJSONArray - String to JSONArray of JSONObject
(a)static JSONArray toJSONArray(JSONArray names, JSONTokener x) throws JSONException static JSONArray toJSONArray(JSONArray names, String string) throws JSONException
JSONArray
of JSONObject
from a comma delimited text string using a supplied JSONArray
as the source of element names.
Example:
String s ="Mohit,Varanasi,20\n" + "Shiva,Chennai,30\n"; JSONArray jsonArrayNames = CDL.rowToJSONArray(new JSONTokener("name, city, age")); JSONArray jsonArray1 = CDL.toJSONArray(jsonArrayNames, new JSONTokener(s)); System.out.println(jsonArray1); JSONArray jsonArray2 = CDL.toJSONArray(jsonArrayNames, s); System.out.println(jsonArray2);
[{"name":"Mohit","city":"Varanasi","age":"20"},{"name":"Shiva","city":"Chennai","age":"30"}] [{"name":"Mohit","city":"Varanasi","age":"20"},{"name":"Shiva","city":"Chennai","age":"30"}]
static JSONArray toJSONArray(JSONTokener x) throws JSONException static JSONArray toJSONArray(String string) throws JSONException
JSONArray
of JSONObject
from a comma delimited text string, using the first row as a source of names.
Example:
String s = "id,name,age\n" + "101,Mohit,20\n" + "102,Shiva,30\n"; JSONArray jsonArray1 = CDL.toJSONArray(new JSONTokener(s)); System.out.println(jsonArray1); JSONArray jsonArray2 = CDL.toJSONArray(s); System.out.println(jsonArray2);
[{"name":"Mohit","age":"20","id":"101"},{"name":"Shiva","age":"30","id":"102"}] [{"name":"Mohit","age":"20","id":"101"},{"name":"Shiva","age":"30","id":"102"}]