In this example we are going to use the JSON-Java (org.json) library to read or parse JSON file. First we start by getting the InputStream
of the JSON file to be read using getResourceAsStream()
method. Next we construct a JSONTokener
from the input stream and create an instance of JSONObject
to read the JSON entries.
We can use method like getString()
, getInt()
, getLong()
, etc. to read a key-value from the JSON file. The getJSONArray()
method allow us to read a list of values returned in JSONArray
object, which can be iterated to get each values represented by the key. Let’s see the detail code snippet below.
package org.kodejava.json;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;
import java.io.InputStream;
public class ReadJSONString {
public static void main(String[] args) {
// info.json
// {
// "id": "1",
// "name": "Alice",
// "age": "20",
// "courses": [
// "Engineering",
// "Finance",
// "Chemistry"
// ]
// }
String resourceName = "/info.json";
InputStream is = ReadJSONString.class.getResourceAsStream(resourceName);
if (is == null) {
throw new NullPointerException("Cannot find resource file " + resourceName);
}
JSONTokener tokener = new JSONTokener(is);
JSONObject object = new JSONObject(tokener);
System.out.println("Id : " + object.getLong("id"));
System.out.println("Name: " + object.getString("name"));
System.out.println("Age : " + object.getInt("age"));
System.out.println("Courses: ");
JSONArray courses = object.getJSONArray("courses");
for (int i = 0; i < courses.length(); i++) {
System.out.println(" - " + courses.get(i));
}
}
}
The result of the code snippet above is:
Id : 1
Name: Alice
Age : 20
Courses:
- Engineering
- Finance
- Chemistry
Maven Dependencies
<dependencies>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20230618</version>
<type>bundle</type>
</dependency>
</dependencies>
- How do I create a string of repeated characters? - September 1, 2023
- How do I convert datetime string with optional part to a date object? - August 28, 2023
- How do I split large excel file into multiple smaller files? - April 15, 2023
Hi, I am trying the example you have given but getting an error at the line:
JSONTokener tokener = new JSONTokener(is);
And the error is below:
The constructor JSONTokener(InputStream) is undefined.
Can you please check and know which library you using?
Regards
Rohit
Hi Rohit,
I’m using the library as shown in the maven dependency section in the post above.
I had the same error but add the line below, it will work:
There is no such thing as ‘ReadJSONString’. Netbeans throws the fits.
ReadJSONString is the clas sname used in the example, you have to use your class name
Hi Wayan, Where do you place the file:
info.json
? I try relative path and absolute path and couldn’t find it.Hi Chao, I am placing the
info.json
file under theresources
directory (in a maven project structure). If you want to use absolute path you can do it like: