Component that produces JSON

Avatar

Avatar

amine74235389

Avatar

amine74235389

amine74235389

27-01-2017

Hi,

Is it possible to create an AEM component that will generate a JSON file instead of an HTML? If that's possible, could you point me to some online resources to see how it's done.

Thanks!

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar

kautuk_sahni

Community Manager

Total Posts

5.8K

Likes

1.0K

Correct Reply

1.1K

Avatar

kautuk_sahni

Community Manager

Total Posts

5.8K

Likes

1.0K

Correct Reply

1.1K
kautuk_sahni
Community Manager

29-01-2017

Yes, we can do it.

Please have a look at this article :

Link:- http://www.nateyolles.com/blog/2015/12/converting-aem-sling-resources-to-json

// Converting AEM/Sling Resources to JSON : You can easily convert an AEM Page, Sling Resource, or JCR Node to JSON using the org.apache.sling.commons.json.jcr.JsonItemWriter class. 

 

Also have a look at this example:

Link:- https://github.com/Adobe-Consulting-Services/acs-aem-samples/blob/master/bundle/src/main/java/com/ad...

//

     JSONObject jsonResponse = new JSONObject();
            try {
                jsonResponse.put("success", true);
                jsonResponse.put("new-world", newWorld);
                // Write the JSON to the response
                response.getWriter().write(jsonResponse.toString(2));
                // Be default, a 200 HTTP Response Status code is used
            } catch (JSONException e) {
                log.error("Could not formulate JSON response");
                // Servlet failures should always return an approriate HTTP Status code
                response.setStatus(SlingHttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                // If you do not set your own HTML Response content, the OOTB HATEOS Response is used
                response.getWriter().write("ERROR");
            }
        }

I hope this would help you.

~kautuk

Answers (1)

Answers (1)

Avatar

Avatar

smacdonald2008

Total Posts

12.7K

Likes

1.4K

Correct Reply

2.3K

Avatar

smacdonald2008

Total Posts

12.7K

Likes

1.4K

Correct Reply

2.3K
smacdonald2008

27-01-2017

AEM provides information in JSON by default: 

https://docs.adobe.com/docs/en/aem/6-2/develop/components/pageinfo.html

If you want to create a custom component - you can build an OSGi service that can encode data to JSON or a Sling Servlet that returns JSON.