Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

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

umamaheswariy46
Level 5
Level 5

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
kautuk_sahni
Correct answer by
Community Manager
Community Manager

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

View solution in original post

0 Replies
kautuk_sahni
Correct answer by
Community Manager
Community Manager

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

View solution in original post

Jörg_Hoh
Employee
Employee

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

Jörg

umamaheswariy46
Level 5
Level 5

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

Jörg_Hoh
Employee
Employee

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

bhansa
Level 1
Level 1

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.

Jörg_Hoh
Employee
Employee
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.
umamaheswariy46
Level 5
Level 5

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

derrickm1745863
Level 1
Level 1

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