Need JSON in Value Format | Community
Skip to main content
Level 3
June 16, 2023
Solved

Need JSON in Value Format

  • June 16, 2023
  • 3 replies
  • 1216 views

Hi All,

 

I have written below JAVA  to get my JSON response from Content Fragment.

 

 

public static JsonArray getMultiValueAsArray(String contentPath, Value[] values, ResourceResolver resourceResolver) throws RepositoryException { JsonArray array = new JsonArray(); if (values != null) { for (Value propertyValue : values) { JsonParser jsonParser = new JsonParser(); JsonElement jsonObj = jsonParser.parse(propertyValue.getString()); logger.info("jsonObj inside getMultiValueAsArray ===== "+jsonObj); array.add(jsonDataParser(contentPath, jsonObj, resourceResolver)); } } return array; }

 

 

And my JSOn is coming below. Here my multifield is storing as STRING [] array , as shown below.

 

But here my requirement is that I want my JSOn format should come like below.

 

Can somebody please let me know what kind of changes I need to do in my JAVA so the format will come like above.

 

Thanks & Regards

Subrat

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by aanchal-sikka

@subnaik 

 

Option-1:

You will have to use a nested JsonObject to get the desired structure.

 

 

public static JsonArray getMultiValueAsArray(String contentPath, Value[] values, ResourceResolver resourceResolver) throws RepositoryException { JsonArray array = new JsonArray(); if (values != null) { for (Value propertyValue : values) { JsonObject propertyObj = new JsonObject(); JsonObject nestedObj = new JsonObject(); nestedObj.addProperty("value", propertyValue.getString()); propertyObj.add(propertyValue, nestedObj); array.add(nestedObj); } } return array; }

 

Here:  

propertyObj is {"byline": {"value", "test2"}} and nestedObj is  {"value", "test2"}

Option-2: Usage of bean classes. Easier to understand and construct structure.

https://stackoverflow.com/questions/11692303/turning-a-bean-to-json-in-java

3 replies

ArpitVarshney
Community Advisor
Community Advisor
June 16, 2023

Hi @subnaik 

You should create a POJO class according to the required JSON object and populate value from multifield object to newly created POJO. After that, you can convert the populated POJO class into JSON.

 

Regards,

Arpit Varshney

aanchal-sikka
Community Advisor
aanchal-sikkaCommunity AdvisorAccepted solution
Community Advisor
June 16, 2023

@subnaik 

 

Option-1:

You will have to use a nested JsonObject to get the desired structure.

 

 

public static JsonArray getMultiValueAsArray(String contentPath, Value[] values, ResourceResolver resourceResolver) throws RepositoryException { JsonArray array = new JsonArray(); if (values != null) { for (Value propertyValue : values) { JsonObject propertyObj = new JsonObject(); JsonObject nestedObj = new JsonObject(); nestedObj.addProperty("value", propertyValue.getString()); propertyObj.add(propertyValue, nestedObj); array.add(nestedObj); } } return array; }

 

Here:  

propertyObj is {"byline": {"value", "test2"}} and nestedObj is  {"value", "test2"}

Option-2: Usage of bean classes. Easier to understand and construct structure.

https://stackoverflow.com/questions/11692303/turning-a-bean-to-json-in-java

Aanchal Sikka
Ritesh_Mittal
Community Advisor and Adobe Champion
Community Advisor and Adobe Champion
June 16, 2023

Hi @subnaik ,

 

To be true, the current JSON structure is more promising rather than the new one you want to achieve. It is less in size, more readable and easy to traverse. I would recommend you check the business requirement and try to propose the older one. 

 

Completing task is 'Job done', completing it right way is 'Achievement'. 🙂

 

Thanks,

Ritesh Mittal