diff --git a/_posts/java-json/2021-01-07-parse-json-in-java.md b/_posts/java-json/2021-01-07-parse-json-in-java.md new file mode 100644 index 0000000..909b671 --- /dev/null +++ b/_posts/java-json/2021-01-07-parse-json-in-java.md @@ -0,0 +1,420 @@ +--- +layout: post +title: "How To Parse JSON In Java?" +author: gaurav +image: assets/images/2021-01-07/parse-json-in-java.png +categories: [JSON, Java] +description: "In this article we will see, how to parse JSON in java. We will be using the JSON Libraries like JSON-java, GSON and json simple" +--- +In this article we will see, how to parse JSON in java. We will be using the JSON Libraries like JSON-java, GSON and json-simple + +**JSON** stands for JavaScript Object Notation. It is easy to use and lightweight open standard file format for storing and transporting data. + +As per the [json.org](https://www.json.org/json-en.html), +>It is easy for humans to read and write. It is easy for machines to parse and generate. + +Example JSON: + +```json +{ + "name": "coderolls", + "type": "blog", + "address": { + "street": "1600 Pennsylvania Avenue NW", + "city": "Washington", + "state": "DC" + }, + "employees": [ + { + "firstName": "John", + "lastName": "Doe" + }, + { + "firstName": "Anna", + "lastName": "Smith" + }, + { + "firstName": "Peter", + "lastName": "Jones" + } + ] +} +``` +In the above JSON, `name` is key and `coderolls` is it's value. For `address` key, value is another JSON object which contains key and values. + +For `employees` key, it's value is array of JSON objects. + +Today we will see three json libraries in java to parse a JSON string. These are listed below, + +1. JSON-Java +2. GSON +4. json-simple + +Now we will see one by one example of all three libraries for parsing a JSON in java. + +## How to parse JOSN in Java using JSON-Java + +JSON-java is one of the most simple JSON library for Java. + +Here, we will be using the `JSONObject` class of the JSON-java library. + +`JSONObject` [has a constructor which accepts string](https://stleary.github.io/JSON-java/index.html). We will be using ths constructor to parse a JSON string. + +``` +public JSONObject(String source) throws JSONException + +Construct a JSONObject from a source JSON text string. This is the most commonly used JSONObject constructor. + +Parameters: + +source - A string beginning with `{` (left brace) and ending with `}` (right brace). + +Throws: + +JSONException - If there is a syntax error in the source string or a duplicated key. +``` + +You can refer [JSON-java Docs](https://stleary.github.io/JSON-java/index.html). + +Maven: +``` + + org.json + json + 20201115 + +``` + +Gradle: +``` +compile group: 'org.json', name: 'json', version: '20201115' +``` +Example: + +```java +package com.coderolls.JSONExample; + +import org.json.JSONArray; +import org.json.JSONObject; + +/** + * A program to parse JSON strin in Java using JSON-Java + * @author Gaurav Kukade at coderolls.com + */ + +public class ParseJSONUsingJSONJava { + + public static void main(String[] args) { + + String jsonString = "{" + + " \"name\": \"coderolls\"," + + " \"type\": \"blog\"," + + " \"address\": {" + + " \"street\": \"1600 Pennsylvania Avenue NW\"," + + " \"city\": \"Washington\"," + + " \"state\": \"DC\"" + + " }," + + " \"employees\": [" + + " {" + + " \"firstName\": \"John\"," + + " \"lastName\": \"Doe\"" + + " }," + + " {" + + " \"firstName\": \"Anna\"," + + " \"lastName\": \"Smith\"" + + " }," + + " {" + + " \"firstName\": \"Peter\"," + + " \"lastName\": \"Jones\"" + + " }" + + " ]" + + "}"; + + System.out.println("Parsing the json string in java using JSON-Java......\n"); + + //add jsonString to the constructor + JSONObject coderollsJSONObject = new JSONObject(jsonString); + + //now we can access the values + String name = coderollsJSONObject.getString("name"); + System.out.println("Name: "+name+"\n"); + + //we can get the JSON object present as value of any key in the parent JSON + JSONObject addressJSONObject = coderollsJSONObject.getJSONObject("address"); + + //access the values of the addressJSONObject + String street = addressJSONObject.getString("street"); + System.out.println("Street: "+street+"\n"); + + + //we can get the json array present as value of any key in the parent JSON + JSONArray employeesJSONArray = coderollsJSONObject.getJSONArray("employees"); + System.out.println("Printing the employess json array: \n"+employeesJSONArray.toString()+"\n"); + + //we can get individual json object at an index from the employeesJSONArray + JSONObject employeeJSONObject = employeesJSONArray.getJSONObject(0); + String firstName = employeeJSONObject.getString("firstName"); + System.out.println("First Name of the employee at index 0: "+firstName); + } +} +``` + +Get the code for [ParseJSONUsingJSON.Java](https://github.com/coderolls/blogpost-coding-examples/blob/main/java-json/parse-json-in-java/ParseJSONUsingJSONJava.java) + +Output: +```java +Parsing the json string in java using JSON-Java...... + +Name: coderolls + +Street: 1600 Pennsylvania Avenue NW + +Printing the employess json array: +[{"firstName":"John","lastName":"Doe"},{"firstName":"Anna","lastName":"Smith"},{"firstName":"Peter","lastName":"Jones"}] + +First Name of the employee at index 0: John +``` +## How to parse JOSN in Java using Gson + +Gson is an open-source Java library to serialize and deserialize Java objects to JSON developed at Google. + +So we can use it to convert a JSON string to an equivalent Java object. + +Here, we will be using the `JsonObject` class of the Gson library. + +You can refer the [docs of JsonObject](https://www.javadoc.io/doc/com.google.code.gson/gson/latest/com.google.gson/com/google/gson/JsonObject.html). + +Maven: +``` + + com.google.code.gson + gson + 2.8.6 + +``` +Gradle: +``` +compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6' +``` + +Example: +```java +package com.coderolls.JSONExample; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; + +/** + * A program to parse JSON strin in Java using Gson + * @author Gaurav Kukade at coderolls.com + */ + +public class ParseJSONUsingGSON { + + public static void main(String[] args) { + + //take json as string + String jsonString = "{" + + " \"name\": \"coderolls\"," + + " \"type\": \"blog\"," + + " \"address\": {" + + " \"street\": \"1600 Pennsylvania Avenue NW\"," + + " \"city\": \"Washington\"," + + " \"state\": \"DC\"" + + " }," + + " \"employees\": [" + + " {" + + " \"firstName\": \"John\"," + + " \"lastName\": \"Doe\"" + + " }," + + " {" + + " \"firstName\": \"Anna\"," + + " \"lastName\": \"Smith\"" + + " }," + + " {" + + " \"firstName\": \"Peter\"," + + " \"lastName\": \"Jones\"" + + " }" + + " ]" + + "}"; + System.out.println("Parsing the json string in java using Gson......\n"); + + Gson gson = new Gson(); + + //get json object from the json string + JsonObject coderollsJsonObject = gson.fromJson(jsonString, JsonObject.class); + + //now we can access the values + String name = coderollsJsonObject.get("name").getAsString(); + System.out.println("Name: "+name+"\n"); + + //we can get the JSON object present as value of any key in the parent JSON + JsonObject addressJsonObject = coderollsJsonObject.get("address").getAsJsonObject(); + + //access the values of the addressJSONObject + String street = addressJsonObject.get("street").getAsString(); + System.out.println("Street: "+street+"\n"); + + + //we can get the json array present as value of any key in the parent JSON + JsonArray employeesJsonArray = coderollsJsonObject.get("employees").getAsJsonArray(); + System.out.println("Printing the employess json array: \n"+employeesJsonArray.toString()+"\n"); + + //we can get individual json object at an index from the employeesJSONArray + JsonObject employeeJsonObject = employeesJsonArray.get(0).getAsJsonObject(); + String firstName = employeeJsonObject.get("firstName").getAsString(); + System.out.println("First Name of the employee at index 0: "+firstName); + } +} +``` + +Get the code for [ParseJSONUsingGSON.java](https://github.com/coderolls/blogpost-coding-examples/blob/main/java-json/parse-json-in-java/ParseJSONUsingGSON.java) + + +Output: +```java +Parsing the json string in java using Gson...... + +Name: coderolls + +Street: 1600 Pennsylvania Avenue NW + +Printing the employess json array: +[{"firstName":"John","lastName":"Doe"},{"firstName":"Anna","lastName":"Smith"},{"firstName":"Peter","lastName":"Jones"}] + +First Name of the employee at index 0: John +``` +## How to parse JOSN in Java using json-simple + +JSON.simple is a simple Java toolkit for JSON. You can use JSON.simple to encode or decode JSON text. + +Maven: +``` + + com.googlecode.json-simple + json-simple + 1.1.1 + +``` + +Gradle: +``` +compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1' +``` +You can refer the [json-simple project page.java](https://code.google.com/archive/p/json-simple/). + +Example: + +```java +package com.coderolls.JSONExample; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; + +/** + * A program to parse JSON strin in Java using json-simple + * @author Gaurav Kukade at coderolls.com + */ + +public class ParseJSONUsingJsonSimple { + + public static void main(String[] args) { + //take json as string + String jsonString = "{" + + " \"name\": \"coderolls\"," + + " \"type\": \"blog\"," + + " \"address\": {" + + " \"street\": \"1600 Pennsylvania Avenue NW\"," + + " \"city\": \"Washington\"," + + " \"state\": \"DC\"" + + " }," + + " \"employees\": [" + + " {" + + " \"firstName\": \"John\"," + + " \"lastName\": \"Doe\"" + + " }," + + " {" + + " \"firstName\": \"Anna\"," + + " \"lastName\": \"Smith\"" + + " }," + + " {" + + " \"firstName\": \"Peter\"," + + " \"lastName\": \"Jones\"" + + " }" + + " ]" + + "}"; + + System.out.println("Parsing the json string in java using json-simple......\n"); + + JSONParser parser = new JSONParser(); + JSONObject coderollsJSONObject = new JSONObject(); + try { + coderollsJSONObject = (JSONObject) parser.parse(jsonString); + } catch (ParseException e) { + e.printStackTrace(); + } + + //now we can access the values + String name = (String) coderollsJSONObject.get("name"); + System.out.println("Name: "+name+"\n"); + + //we can get the JSON object present as value of any key in the parent JSON + JSONObject addressJSONObject = (JSONObject) coderollsJSONObject.get("address"); + + //access the values of the addressJSONObject + String street = (String) addressJSONObject.get("street"); + System.out.println("Street: "+street+"\n"); + + + //we can get the json array present as value of any key in the parent JSON + JSONArray employeesJSONArray = (JSONArray) coderollsJSONObject.get("employees"); + System.out.println("Printing the employess json array: \n"+employeesJSONArray.toString()+"\n"); + + //we can get individual json object at an index from the employeesJSONArray + JSONObject employeeJSONObject = (JSONObject) employeesJSONArray.get(0); + String firstName = (String) employeeJSONObject.get("firstName"); + System.out.println("First Name of the employee at index 0: "+firstName); + } +} +``` + +Get the code for [ParseJSONUsingJsonSimple.java](https://github.com/coderolls/blogpost-coding-examples/blob/main/java-json/parse-json-in-java/ParseJSONUsingJsonSimple.java) + +Output: +```java +Parsing the json string in java using json-simple...... + +Name: coderolls + +Street: 1600 Pennsylvania Avenue NW + +Printing the employess json array: +[{"firstName":"John","lastName":"Doe"},{"firstName":"Anna","lastName":"Smith"},{"firstName":"Peter","lastName":"Jones"}] + +First Name of the employee at index 0: John +``` + +## Conclusion + +All three libraries allow you create a JSON object from the json string but I found the JSON-Java is easy to use. + +You can visit my [YouTube channel 'coderolls'](https://www.youtube.com/channel/UCl31HHUdQbSHOQfc9L-wo3w?view_as=subscriber?sub_confirmation=1) to find more video tutorials. + +-------------- + +You can support me by [giving a cup of Coffee ☕](https://www.paypal.me/GauravKukade) + +#### Related Articles + +- [8 Basic GIT Commands Every Newbie Developer Must Know](https://coderolls.com/basic-git-commands/) +- [How To Reverse A String In Java (5 ways)](https://coderolls.com/reverse-a-string-in-java/) +- [How To Create UUID in Java?](https://coderolls.com/create-uuid-in-java/) +- [Learn About Java String Pool And intern() Method](https://coderolls.com/java-string-pool-and-intern-method/) +- [How Do I Compare Strings In Java](https://coderolls.com/compare-strings-in-java/) +- [Compare Two Strings Lexicographically In Java](https://coderolls.com/compare-two-strings-lexicographically-in-java/) +- [Difference Between StringBuffer and StringBuilder class](https://coderolls.com/difference-between-stringbuffer-and-stringbuilder/) +- [8 Basic GIT Commands Every Newbie Developer Must Know](https://coderolls.com/basic-git-commands/) +- [How To Create UUID in Java?](https://coderolls.com/create-uuid-in-java/) diff --git a/assets/images/2021-01-07/parse-json-in-java.png b/assets/images/2021-01-07/parse-json-in-java.png new file mode 100644 index 0000000..5ae4689 Binary files /dev/null and b/assets/images/2021-01-07/parse-json-in-java.png differ