Java http json parse

How To Parse JSON In Java?

JSON stands for JavaScript Object Notation. It is easy to use and lightweight open standard file format for storing and transporting data.

It is easy for humans to read and write. It is easy for machines to parse and generate.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
 "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,

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. 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 `` (right brace). Throws: JSONException - If there is a syntax error in the source string or a duplicated key.
compile group: 'org.json', name: 'json', version: '20201115'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
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); > > 
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.

 com.google.code.gson gson 2.8.6  
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
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); > > 
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.

 com.googlecode.json-simple json-simple 1.1.1  
compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
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); > > 
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’ to find more video tutorials.

Источник

How to Parse JSON in Java

Last updated: 08 November 2019 In this tutorial we will look at how to parse JSON in Java using different libraries. JSON stands for JavaScript Object Notation, and it is based on a subset of JavaScript. As a data-exchange format, it is widely used in web programming. Here we show how to parse JSON in Java using the org.json library. A JSON object is an unordered set of key/value pairs. A JSON array is an ordered collection of values. The values themselves could be objects or arrays. We will be parsing this JSON as an example to retrieve values for pageName , pagePic and post_id

Parse JSON Using org.json

To use org.json to parse JSON in Java, you need to add the library as a dependency. This can be fetched from Maven repository

import org.json.JSONArray; import org.json.JSONObject; public class ParseJSON < static String json = ". "; public static void main(String[] args) < JSONObject obj = new JSONObject(json); String pageName = obj.getJSONObject("pageInfo").getString("pageName"); System.out.println(pageName); JSONArray arr = obj.getJSONArray("posts"); for (int i = 0; i < arr.length(); i++) < String post_id = arr.getJSONObject(i).getString("post_id"); System.out.println(post_id); >> > 

Parse JSON Using Gson

In order to use Gson to parse JSON in Java, you need to add the library as a dependency. You can get the latest version from Maven repository

The below example shows how to Parse the above JSON with Gson.

import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class ParseJSON < static String json = ". "; public static void main(String[] args) < JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject(); String pageName = jsonObject.getAsJsonObject("pageInfo").get("pageName").getAsString(); System.out.println(pageName); JsonArray arr = jsonObject.getAsJsonArray("posts"); for (int i = 0; i < arr.size(); i++) < String post_id = arr.get(i).getAsJsonObject().get("post_id").getAsString(); System.out.println(post_id); >> > 

Like the previous example, the . needs to be replaced by the JSON string.

Parse JSON Using JsonPATH

The above two examples require a full deserialization of the JSON into a Java object before accessing the value in the property of interest. Another alternative, which does not go this route is to use JsonPATH which is like XPath for JSON and allows traversing of JSON objects.

Like before, you need to add JsonPATH as a dependency, which can be fetched from Maven repository

For example, to parse the above JSON we can use:

import com.jayway.jsonpath.JsonPath; public class ParseJSON < static String json = ". "; public static void main(String[] args) < String pageName = JsonPath.read(json, "$.pageInfo.pageName"); System.out.println(pageName); Integer posts = JsonPath.read(json, "$.posts.length()"); for(int i=0; i < posts; i++) < String post_id = JsonPath.read(json, "$.posts[" + i + "].post_id"); System.out.println(post_id); >> > 

Источник

Читайте также:  JavaScript: Hello Friend
Оцените статью