Expand my Community achievements bar.

SOLVED

Iterate over the JSON object elements in sling model

Avatar

Level 2

I have the following JSON Object

import org.json.JSONObject;

JSONObject jsonObject = new JSONObject("jsonString")

 

The output of the above jsonObject follows:

{
  "elements": {
    "barType": "bar",
    "website": "website",
    "endDate": "end",
    "fooText": "text",
    "fooDisclaimer": "Disclaimer",
    "type": "type",
    "fooPage": {
      "string": "string",
      "value": [
        {
          "number": "2",
          "pagePath": "/foo/bar/home/selector/extension"
        },
        {
          "number": "5",
          "pagePath": "/foo/bar"
        }
      ]
    },
    "fooTitle": "Title",
    "locations": "locations"
  },
  "items": "items"
}

 

Now I want to perform following steps:

  1. Create a new JSON object

  2. iterate over the "elements" node in the above json object (jsonObject)

    • Copy the child elements to the new JSON object if name is barType or names starts with foo, but not fooPage
    • If name = fooPage:
      • iterate over the values to find one where pagePath = currentPageURL add a new property called fooPriority to the new JSON object with the value from the number

Note: currentPageURL = "/foo/bar"

 

The expected output of new JSON object would be:

{
  "barType": "bar",
  "fooText": "text",
  "fooDisclaimer": "Disclaimer",
  "fooPriority": 5,
  "fooTitle": "Title",
  "locations": "locations"
}

Please help me with the implementation of Java code by using org.json.JSONObject;

Thanks in advance

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Please check examples here https://www.geeksforgeeks.org/parse-json-java/ which gives an idea on reading and creating new objects, so that you can write your code based on your json object structure. Hope this helps. 

View solution in original post

3 Replies

Avatar

Correct answer by
Community Advisor

Please check examples here https://www.geeksforgeeks.org/parse-json-java/ which gives an idea on reading and creating new objects, so that you can write your code based on your json object structure. Hope this helps. 

Thanks @Siva_Sogalapalli 

Could you please help me, how to get JSON Objects based on prefix words in the key?

 

ex: 

  • Copy the child elements to the new JSON object if name is barType or names starts with foo, but not fooPage

Avatar

Community Advisor

You can try in different ways based on your requirement & needs.

For example, if the keys are always same and very few, then you can directly get it using key names like

JSONObject jo = (JSONObject) obj;
String barType = (String) jo.get("barType");
String foo = (String) jo.get("foo");

Alternatively, you can also store all the keys in array which you want to read and iterate the array to get all the keys so that you can read the same from json object. Just look for java examples and use the same in sling model should work for you.