Expand my Community achievements bar.

Guidelines for the Responsible Use of Generative AI in the Experience Cloud Community.
SOLVED

How to where to store JSON files to access JSON as it is in UI(Headless arch)

Avatar

Community Advisor

Hi Team,

We have a situation where we need to store the .JSON files as it is in same path and UI application is going to access this file. This is headless architecture.

What is the best place to keep this and that place should be accessible to team members and they can be able to upload it to the AEM like assets.

Any suggestions or ideas on this?

Thanks

Uma

1 Accepted Solution

Avatar

Correct answer by
Administrator

Write a custom AEM service and then use JCR API to update the nodes.

Parse the values from JSON and then use API to update the nodes in the JCR -- for example:

//Store content from the client JSP in the JCR

   Node custNode = customerRoot.addNode("customer"+firstName+lastName+custId,"nt:unstructured");

              

  //make sure name of node is unique

  custNode.setProperty("id", custId);

  custNode.setProperty("firstName", firstName);

  custNode.setProperty("lastName", lastName);

See: Adobe Experience Manager Help | Persisting Adobe Experience Manager data in the Java Content Reposit... and Adobe Experience Manager Help | Submitting Adobe Experience Manager form data to Java Sling Servlets

If the Json data is huge then There are many libraries for serializing/deserializing JSON in java, the most notable is Google’s Gson: https://github.com/google/gson



Kautuk Sahni

View solution in original post

9 Replies

Avatar

Correct answer by
Administrator

Write a custom AEM service and then use JCR API to update the nodes.

Parse the values from JSON and then use API to update the nodes in the JCR -- for example:

//Store content from the client JSP in the JCR

   Node custNode = customerRoot.addNode("customer"+firstName+lastName+custId,"nt:unstructured");

              

  //make sure name of node is unique

  custNode.setProperty("id", custId);

  custNode.setProperty("firstName", firstName);

  custNode.setProperty("lastName", lastName);

See: Adobe Experience Manager Help | Persisting Adobe Experience Manager data in the Java Content Reposit... and Adobe Experience Manager Help | Submitting Adobe Experience Manager form data to Java Sling Servlets

If the Json data is huge then There are many libraries for serializing/deserializing JSON in java, the most notable is Google’s Gson: https://github.com/google/gson



Kautuk Sahni

Avatar

Employee Advisor

Why don't you upload the JSON file as asset (just as you would upload images) and deliver it as is?

Jörg

Avatar

Community Advisor

Hi Jorg,

we are looking for that kind of option, where the team can go ahead and upload the JSON file and should be able to accessible in UI, I have uploaded and not able to read JSON from the publishers .. returning page not found.  This approach is working for txt and js but not JSON.

Is there any way that i can upload JSON into dam and can be able to read content of the file by accessing the URL ?

Thanks

Uma

Avatar

Employee Advisor

Hi,

  • I have a file called tree.json on my local drive
  • I open my AEM 6.4 instance and browse into assets, /content/dam/we-retail
  • I drag and drop the tree.json into the browser window, triggering the upload it
  • tree.json is now being displayed as asset
  • I hit localhost:4502/content/dam/we-retail/tree.json
  • It is downloading the JSON file and it can be displayed correctly.

I did not have any problems with that approach.

Jörg

Avatar

Level 2

I also faced the same scenario where the file is getting downloaded, which means it is accessible. Is there any way that we can open the file in browser instead of downloading.

I am not trying to do it through DAM, instead I am trying to do that via codebase.

Avatar

Employee Advisor
The problem with some assets opening directly in the browser is the fact, that you are displaying untrusted content. Imagine that you upload a random HTML file into AEM, then display it, and then in the HTML there is a POST request to a different domain, which just sends all your cookies there. That's the reason why for some mime-types the display in the browser is not allowed. But of course, you can reconfigure that and also write custom code, which displays such content directly in the browser.

Avatar

Community Advisor

I tried same way, somehow it didnt work for me, Let me try again. Thanks

Avatar

Level 1

This could be because of the dispatcher configs allow  ".json"  extention to be accessible