How to parse JSON in Java
Last Updated :
07 Aug, 2019
JSON (JavaScript Object Notation) is a lightweight, text-based, language-independent data exchange format that is easy for humans and machines to read and write. JSON can represent two structured types: objects and arrays. An object is an unordered collection of zero or more name/value pairs. An array is an ordered sequence of zero or more values. The values can be strings, numbers, booleans, null, and these two structured types.
Below is a simple example from Wikipedia that shows JSON representation of an object that describes a person. The object has string values for first name and last name, a number value for age, an object value representing the person’s address, and an array value of phone number objects.
{
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
JSON Processing in Java : The Java API for JSON Processing JSON.simple is a simple Java library that allow parse, generate, transform, and query JSON.
Getting Started : You need to download the json-simple-1.1 jar and put it in your CLASSPATH before compiling and running the below example codes.
Json-Simple API : It provides object models for JSON object and array structures. These JSON structures are represented as object models using types JSONObject and JSONArray. JSONObject provides a Map view to access the unordered collection of zero or more name/value pairs from the model. Similarly, JSONArray provides a List view to access the ordered sequence of zero or more values from the model.
Write JSON to a file
Let us see an example that writes above JSON data into a file “JSONExample.json”, with help of JSONObject and JSONArray.
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.LinkedHashMap;
import java.util.Map;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class JSONWriteExample
{
public static void main(String[] args) throws FileNotFoundException
{
JSONObject jo = new JSONObject();
jo.put( "firstName" , "John" );
jo.put( "lastName" , "Smith" );
jo.put( "age" , 25 );
Map m = new LinkedHashMap( 4 );
m.put( "streetAddress" , "21 2nd Street" );
m.put( "city" , "New York" );
m.put( "state" , "NY" );
m.put( "postalCode" , 10021 );
jo.put( "address" , m);
JSONArray ja = new JSONArray();
m = new LinkedHashMap( 2 );
m.put( "type" , "home" );
m.put( "number" , "212 555-1234" );
ja.add(m);
m = new LinkedHashMap( 2 );
m.put( "type" , "fax" );
m.put( "number" , "212 555-1234" );
ja.add(m);
jo.put( "phoneNumbers" , ja);
PrintWriter pw = new PrintWriter( "JSONExample.json" );
pw.write(jo.toJSONString());
pw.flush();
pw.close();
}
}
|
Output from file “JSONExample.json” :
{
"lastName":"Smith",
"address":{
"streetAddress":"21 2nd Street",
"city":"New York",
"state":"NY",
"postalCode":10021
},
"age":25,
"phoneNumbers":[
{
"type":"home", "number":"212 555-1234"
},
{
"type":"fax", "number":"212 555-1234"
}
],
"firstName":"John"
}
Note : In JSON, An object is an unordered set of name/value pairs, so JSONObject doesn’t preserve the order of an object’s name/value pairs, since it is (by definition) not significant. Hence in our output file, order is not preserved.
Read JSON from a file
Let us see an example that read JSON data from above created file “JSONExample.json” with help of JSONParser, JSONObject and JSONArray.
import java.io.FileReader;
import java.util.Iterator;
import java.util.Map;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.*;
public class JSONReadExample
{
public static void main(String[] args) throws Exception
{
Object obj = new JSONParser().parse( new FileReader( "JSONExample.json" ));
JSONObject jo = (JSONObject) obj;
String firstName = (String) jo.get( "firstName" );
String lastName = (String) jo.get( "lastName" );
System.out.println(firstName);
System.out.println(lastName);
long age = ( long ) jo.get( "age" );
System.out.println(age);
Map address = ((Map)jo.get( "address" ));
Iterator<Map.Entry> itr1 = address.entrySet().iterator();
while (itr1.hasNext()) {
Map.Entry pair = itr1.next();
System.out.println(pair.getKey() + " : " + pair.getValue());
}
JSONArray ja = (JSONArray) jo.get( "phoneNumbers" );
Iterator itr2 = ja.iterator();
while (itr2.hasNext())
{
itr1 = ((Map) itr2.next()).entrySet().iterator();
while (itr1.hasNext()) {
Map.Entry pair = itr1.next();
System.out.println(pair.getKey() + " : " + pair.getValue());
}
}
}
}
|
Output:
John
Smith
25
streetAddress : 21 2nd Street
postalCode : 10021
state : NY
city : New York
number : 212 555-1234
type : home
number : 212 555-1234
type : fax
Similar Reads
How to Start Learning Java?
Java is one of the most popular and widely used programming languages and platforms. A platform is an environment that helps to develop and run programs written in any programming language. Java is fast, reliable, and secure. From desktop to web applications, scientific supercomputers to gaming cons
8 min read
How to Run Java Program?
Java is a popular, high-level, object-oriented programming language that was developed by James Gosling and his team at Sun Microsystems (now owned by Oracle Corporation) in the mid-1990s. It is widely used for developing various kinds of software, including web applications, desktop applications, m
2 min read
How to Generate JSON with JsonGenerator in Java?
The JavaScript Object Notation (JSON) is a standard text-based format for representing structured data based on JavaScript object syntax. It is lightweight, flexible, and faster than XML, which is the reason that it is used widely for data interchange between server and client. If you ever work on J
15 min read
How to Convert Map to JSON to HashMap in Java?
JSON is an open standard file format, and easier data interchange format helpful for humans to transmit data. Most of the apps display JSON data and hence nowadays JSON has become the mandatory media to transmit data. Here we will get to know how to convert Map to JSON and for Map, let us take HashM
8 min read
What is JSON-Java (org.json)?
JSON(Javascript Object Notation) is a lightweight format of data exchange and it is independent of language. It is easily read and interpreted by humans and machines. Hence nowadays, everywhere JSON is getting used for transmitting data. Let us see how to prepare JSON data by using JSON.org JSON API
5 min read
How to Setup Jackson in Java Application?
JSON(Javascript Object Notation) is the most popular format for the exchange of data in the world of web applications. The browsers can easily parse json requests and convert them to javascript objects. The servers parse json requests, process them, and generates a new json response. JSON is self-de
7 min read
Working with JSON Data in Java
JSON stands for JavaScript Object Notation which is a lightweight text-based open standard designed which is easy for human-readable data interchange. In general, JSON is extended from JavaScript. JSON is language-independent and It is easy to read and write. The file extension of JSON is .json. Exa
3 min read
How to Iterate Any Map in Java?
In Java, a Map is a data structure that is used to store key-value pairs. Understanding how to iterate over the elements of a map plays a very important role. There are 5 ways to iterate over the elements of a map, and in this article, we are going to discuss all of them. Note: We cannot iterate ove
5 min read
Java Boon JSON API
JSON objects are throughout available as output for any REST API call and in all mediums, it is the way of communication between any entities. Java Boon is the fastest way to serialize and parse JSON in Java and it is widely used in projects. Necessary jars to use Boon in the project : boon-0.34.jar
7 min read
ChoiceFormat parse() method in Java with Examples
The parse() method of java.text.ChoiceFormat class is used to get the limit value for particular format in ChoiceFormat object. Syntax: public Number parse(String text, ParsePosition status) Parameter: This method takes the following parameters: text: which is the text for which limit value have to
2 min read