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
Solved! Go to Solution.
Views
Replies
Total Likes
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
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
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
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