Creating json array in java

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 Java Enterprise Applications then you will come across tasks where you might need to generate and parse JSON data for your application. For instance, RESTful web services use JSON extensively as the format for the data inside requests and responses.

The following examples show a JSON object with name-value pairs:

Java provides an API to parse, transform, and query JSON data using either the object model or the streaming model.

The object model works by creating a tree that represents the JSON data in memory. The object model generates JSON output by navigating the entire tree at once and hence, allows for processing that requires access to the entire contents of the tree at once. The tree can be navigated, analyzed, or modified. This approach is considered flexible but it is slower than the streaming model and requires more memory.

Java API provides the javax.json package, it contains a reader interface, a writer interface, and a model builder interface for the object model. The package also contains other utility classes and Java types for JSON elements.

In the object model, a JSON-object reference is created which represents the root of the tree and can be used to navigate the tree or to write it to a stream as JSON data. This JSON-object reference created can either be of type JsonObject or JsonArray, and both of them are the subtypes of JsonStructure. Which one it will depend on the format/content of the file.

Let’s describe each of them to be precise and clear.

Let us go through some traits of JsonObject

  • Written in key-value pairs.
  • Keys must be strings and values must be valid JSON type.
  • JsonObject starts and ends with curly braces < >.
  • Order is not important.

Sample code for JSON object is as follows in below illustration

Let us go through some traits of JsonArray

  • Used to organize a collection of related items.
  • Values can be of type string, number, object, array, boolean, or null.
  • JsonArray starts and ends with square brackets [ ].
  • Order is important.

Illustration:

JsonObject and JsonArray can also be used in a nested manner to represent some special kind of data. You can either use the object inside the array or the array inside the object.

Now that we are clear with the basics, we can learn how to code.

Читайте также:  Python list это массив

Now let us come onto installing javax.json API. So, If you are using a Maven project then add this dependency to your pom.xml file:

 javax.json javax.json-api 1.1.4 

Otherwise, in case you are creating a normal project then add the javax.json jar to your Libraries else download the jar file from here and follow the below steps

Step 1: Creating Object model from given JSON data

if we assume that we already have some data in the JSON format, and thus want to convert that into a java JsonObject, then we can make use of the javax.json.JsonStructure.

Let us assume we have a sample.txt that stores JSON data as follows:

Apart from just creating an object of the data, we need to have a way to read that data as well!

Step 2: Navigate it.

For navigating the data we will create a function navigateTree() that will take the JSON object/model that we created, as an input, and for every object or array that it encounters nested inside the JSON model, it will call the navigating function again, and if the element is a value, then it will print the standard output.

Now we can proceed to code for creating a JsonStructure out of this sample.txt file which is as shown below

Java

OBJECT Key firstName: STRING John Key lastName: STRING Smith Key age: NUMBER 25 Key address: OBJECT Key streetAddress: STRING 21 2nd Street Key city: STRING New York Key state: STRING NY Key postalCode: STRING 10021 Key phoneNumber: ARRAY OBJECT Key type: STRING home Key number: STRING 212 555-1234 OBJECT Key type: STRING fax Key number: STRING 646 555-4567

2. Creating an object model from code

In order to create an object model of our own from scratch we will make use of the JSON class that provides a method createObjectBuilder() that creates a JSON object builder. The JsonObjectBuilder interface acts as a builder for creating JsonObject models from scratch. This interface initializes an empty JSON object model and provides methods to add name/value pairs to the object model and to return the resulting object. The methods in this class can be chained to add multiple name/value pairs to the object.

Java

OBJECT Key firstName: STRING Duke Key lastName: STRING Java Key age: NUMBER 18 Key streetAddress: STRING 100 Internet Dr Key city: STRING JavaTown Key state: STRING JA Key postalCode: STRING 12345 Key phoneNumbers: ARRAY OBJECT Key type: STRING mobile Key number: STRING 111-111-1111 OBJECT Key type: STRING home Key number: STRING 222-222-2222

3. Writing Object model to a Stream

The object models that we created in the above examples can be written to a stream using the JsonWriter class. JsonWriter writes a JSON object or array structure to an output source. This time we will write the contents of the sample.txt to an output stream after we have converted it to a JsonStructure.

Читайте также:  Стили шаблонов html css

Java

Output: On the console, the following will be printed in a single line

Now dwelling onto next model,

The streaming model uses an event-based parser that reads JSON data one element at a time. The streaming model generates JSON output to a given stream by making a function call with one element at a time. This approach is adequate for local processing, in which the processing of an element does not require information from the rest of the data. The way it works is that the parser generates events and stops for processing whenever it either finds a key, or finds a value, or reaches the beginning or end of an object or array. The element found can be processed or discarded based on the code and then the parser moves to the next event.

The Java API provides the javax.json.stream package, it contains a parser interface, JsonParser, and a generator interface, JsonGenerator for the streaming model. The interface JsonParser contains methods to parse JSON in a streaming way. The interface JsonGenerator contains methods to write JSON to an output source in a streaming way.

In the upcoming code, we will make use of the same sample.txt file to parse it.

1. Reading JSON data using a Parser: We will use the JsonParser that provides forward, read-only access to JSON data in a streaming way. JsonParser parses JSON using the pull parsing programming model. In this model, the client code controls the thread and calls the method next() to advance the parser to the next state after processing each element. The parser can generate the following events:

START_OBJECT, END_OBJECT, START_ARRAY, END_ARRAY, KEY_NAME, VALUE_STRING, VALUE_NUMBER, VALUE_TRUE, VALUE_FALSE, and VALUE_NULL.

In the following code we will perform the following steps:

  1. Get the JSON data in the form of a String, so that it can be passed to the parser object.
  2. Obtain a parser instance by calling the JSON.createParser static method and pass the string to it.
  3. Iterate over the parser events with the JsonParser.hasNext and the JsonParser.next methods.
  4. Perform local processing for each element.

Implementation:

Источник

How to Write/create a JSON array using Java?

A Json array is an ordered collection of values that are enclosed in square brackets i.e. it begins with ‘[’ and ends with ‘]’. The values in the arrays are separated by ‘,’ (comma).

Sample JSON array

The json-simple is a light weight library which is used to process JSON objects. Using this you can read or, write the contents of a JSON document using Java program.

JSON-Simple maven dependency

Following is the maven dependency for the JSON-simple library −

  com.googlecode.json-simple json-simple 1.1.1  

Paste this with in the tag at the end of your pom.xml file. (before tag)

Example

To create an array in a JSON file using a Java program −

//Creating a JSONObject object JSONObject jsonObject = new JSONObject();
  • Insert the required key-value pairs using the put() method of the JSONObject class.
  • Create a JSON array by instantiating the JSONArray class and add, elements to the created array using the add() method of the JSONArray class.
JSONArray array = new JSONArray(); array.add("element_1"); array.add("element_2"); array.add("element_3");
  • After adding all the required elements add the array into the JSON document using the put() method as −
jsonObject.put("contact",array);
FileWriter file = new FileWriter("E:/json_array_output.json"); file.write(jsonObject.toJSONString()); file.close();

Following Java program creates a JSON object with an array in it and writes it into a file named json_array_output.json.

Читайте также:  Где нужны программисты питон

Example

import java.io.FileWriter; import java.io.IOException; import org.json.simple.JSONArray; import org.json.simple.JSONObject; public class WritingJSONArray < public static void main(String args[]) < //Creating a JSONObject object JSONObject jsonObject = new JSONObject(); //Inserting key-value pairs into the json object jsonObject.put("ID", "1"); jsonObject.put("First_Name", "Krishna Kasyap"); jsonObject.put("Last_Name", "Bhagavatula"); jsonObject.put("Date_Of_Birth", "1989-09-26"); jsonObject.put("Place_Of_Birth", "Vishakhapatnam"); jsonObject.put("Country", "25000"); //Creating a json array JSONArray array = new JSONArray(); array.add("e-mail: krishna_kasyap@gmail.com"); array.add("phone: 9848022338"); array.add("city: Hyderabad"); array.add("Area: Madapur"); array.add("State: Telangana"); //Adding array to the json object jsonObject.put("contact",array); try < FileWriter file = new FileWriter("E:/json_array_output.json"); file.write(jsonObject.toJSONString()); file.close(); >catch (IOException e) < // TODO Auto-generated catch block e.printStackTrace(); >System.out.println("JSON file created: "+jsonObject); > >

Output

If you observe the contents of the JSON file you can see the created data as −

Источник

How to create Json Array using Object Model?

This page shows how to create Json array using Object Model.

Note: Refer How to read Json data using JsonReader? page for dependent libraries.

Java example to create json array:

package com.javaapi.json.examples; import java.io.StringWriter; import javax.json.Json; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; import javax.json.JsonWriter; public class CreateJsonObjEx < public static void main(String a[])< JsonObjectBuilder jsonBuilder = Json.createObjectBuilder(); jsonBuilder.add("emp_name", "Nataraj G"); jsonBuilder.add("emp_id", 1016); jsonBuilder.add("salary", 20000); // create Json array with only values JsonArrayBuilder plnArrBld = Json.createArrayBuilder(); plnArrBld.add("Rakesh"); plnArrBld.add("John"); JsonArray arr = plnArrBld.build(); // the array got created, add it to the json as a child element jsonBuilder.add("direct_contacts", arr); // create an array of key-value pairs JsonArrayBuilder kvArrBld = Json.createArrayBuilder(); // create each key-value pair as seperate object and add it to the array kvArrBld.add(Json.createObjectBuilder().add("email", "[email protected]").build()); kvArrBld.add(Json.createObjectBuilder().add("mobile", "123123123123").build()); JsonArray contactsArr = kvArrBld.build(); // add contacts array object jsonBuilder.add("contacts", contactsArr); JsonObject empObj = jsonBuilder.build(); // here we are writing to String writer. // if you want you can write it to a file as well StringWriter strWtr = new StringWriter(); JsonWriter jsonWtr = Json.createWriter(strWtr); jsonWtr.writeObject(empObj); jsonWtr.close(); System.out.println(strWtr.toString()); > >

Java API for JSON processing examples

Inner class: classes defined in other classes, including those defined in methods are called inner classes. An inner class can have any accessibility including private.

Anonymous class: Anonymous class is a class defined inside a method without a name and is instantiated and declared in the same place and cannot have explicit constructors.

About Author

I’m Nataraja Gootooru, programmer by profession and passionate about technologies. All examples given here are as simple as possible to help beginners. The source code is compiled and tested in my dev environment.

If you come across any mistakes or bugs, please email me to [email protected] .

Most Visited Pages

Источник

Оцените статью