How to simply examine a JSON response from a Cloudant search in Java

This is a short cheat sheet about, how to simply examine a JSON response from a Cloudant search in Java. I found different examples, but these examples were (more or less) older examples, where I missed some pieces and at the end for me the Java EE documentation was the best resource to realize it.

The JSON I wanted to examine, was a JSON with a nested JSON array and that array also contains a nested JSON.

Here you see the JSON format I wanted to examine. As I said: It’s a JSON with a nested JSON array and the array also contains a nested JSON.

{
  "total_rows": 1,
  "bookmark": "g2wAAAABaANkAClkYmNvcmVAZGI3LmJtLWNjLXVzLXNvdXRoLTExLmNsb3VkYW50Lm5ldGwAAAACYhAAAABiH____2poAkY_8AAAAAAAAGEAag",
  "rows": [
    {
      "fields": {
        "url": "https://haralduebele.github.io/2019/02/17/blue-cloud-mirror-dont-open-the-doors/",
        "customer": "your-blogs",
        "title": "Blue Cloud Mirror — (Don’t) Open The Doors!",
        "type": "articles",
        "authorName": "Harald Uebele"
      },
      "id": "7a5f27ce3ef66f895cb666e46ce45e55"
    }
  ]
}

This is the simply content I need from the JSON response of the Cloudant search:

  • AuthorName
  • Title
  • URL

Example in JavaScript format:

rows[0].fields.authorName
rows[0].fields.title
rows[0].fields.url

Java code and imports

Here is the Java code and the imports I used.

Imports

// JSON
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonArray;
import javax.json.JsonReader;
// Need to the string input
import java.io.StringReader;  

Code

Here are the steps of the following source code example:

  1. Get Cloudant search response value
  2. Create simple JSON object from search response value
  3. Extract nested JSON array from simple JSON object
  4. Get the first JSON object entry in the JSON array
  5. Extract the nested JSON object from the first JSON object entry
  6. Extract the relevant data from the nested JSON object
// Cloudant search response value
System.out.println("-->log: search_response.toString: " + search_response.toString());

// Create simple json object from response value
JsonReader jsonReader = Json.createReader(new StringReader(search_response.toString()));
JsonObject object = jsonReader.readObject();
jsonReader.close();

// Extract nested json array from simple json object 
JsonArray rows = object.getJsonArray("rows");
System.out.println("-->log: rows: " + rows);

// Get the first json object entry in the json array 
JsonObject row_object = rows.getJsonObject(0);
System.out.println("-->log: row_object: " + row_object);

// Extract the nested json object from the first json object entry
JsonObject fields = row_object.getJsonObject("fields");
System.out.println("-->log:  fields: " + fields);

// Extract the relevant data from the nested json object
String url = fields.getString("url");
String authorName = fields.getString("authorName");
String title = fields.getString("title");
System.out.println("-->log: Author : " + authorName + " Title: " + " url: " + url);

Console output for the example

This is an example console output of the running application.

-->log: search_response.toString: {
  "total_rows": 1,
  "bookmark": "g2wAAAABaANkAClkYmNvcmVAZGI3LmJtLWNjLXVzLXNvdXRoLTExLmNsb3VkYW50Lm5ldGwAAAACYhAAAABiH____2poAkY_8AAAAAAAAGEAag",
  "rows": [
    {
      "fields": {
        "url": "https://haralduebele.github.io/2019/02/17/blue-cloud-mirror-dont-open-the-doors/",
        "customer": "your-blogs",
        "title": "Blue Cloud Mirror — (Don’t) Open The Doors!",
        "type": "articles",
        "authorName": "Harald Uebele"
      },
      "id": "7a5f27ce3ef66f895cb666e46ce45e55"
    }
  ]
}
-->log: rows: [{"fields":{"url":"https://haralduebele.github.io/2019/02/17/blue-cloud-mirror-dont-open-the-doors/","customer":"your-blogs","title":"Blue Cloud Mirror — (Don’t) Open The Doors!","type":"articles","authorName":"Harald Uebele"},"id":"7a5f27ce3ef66f895cb666e46ce45e55"}]
-->log: row_object: {"fields":{"url":"https://haralduebele.github.io/2019/02/17/blue-cloud-mirror-dont-open-the-doors/","customer":"your-blogs","title":"Blue Cloud Mirror — (Don’t) Open The Doors!","type":"articles","authorName":"Harald Uebele"},"id":"7a5f27ce3ef66f895cb666e46ce45e55"}
-->log:  fields: {"url":"https://haralduebele.github.io/2019/02/17/blue-cloud-mirror-dont-open-the-doors/","customer":"your-blogs","title":"Blue Cloud Mirror — (Don’t) Open The Doors!","type":"articles","authorName":"Harald Uebele"}
-->log: Author : Harald Uebele Title:  url: https://haralduebele.github.io/2019/02/17/blue-cloud-mirror-dont-open-the-doors/

Summary

Finally it’s pretty easy to handle JSON in Java.


Here are some additional links, which can give you an additional point of view.



I hope this was useful for you and let’s see what’s next?

Greetings,

Thomas

#Json, #JsonArray, #JsonReader, #JsonObject, #Java

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.