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
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

How to display JSON data through Sling Model

ashwinikhaple
Level 2
Level 2

I have created a Component that has title, description, date, URL, and read the values in SlingModel then how can I display the data in the form of JSON to the frontend through the sling model?

1 Accepted Solution
asutosh_jena
Correct answer by
Community Advisor
Community Advisor

Hi @ashwinikhaple 
If there is a sling model available and you want to fetch the same properties as a JSON response,so there is no need to create a Sling Servlet. You just need to export your sling model using jackson exporter and that’s all. Sling Model Exporter can be used as a web service or as a rest API.

 

Sling Model Exporter was introduced in Sling Models v1.3.0 which allows new annotations to be added to Sling Models that define how the Model an can be exported as a different Java object, or more commonly, serialized into a different format such as JSON.

 

@Model(adaptables = Resource.class, resourceType = { "wknd/components/content/image" }, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
@Exporter(name = "jackson", extensions = "json", options = { @ExporterOption(name = "SerializationFeature.WRITE_DATES_AS_TIMESTAMPS", value = "true") })
public class ModelComponent {

@Inject
String title;

@Inject
String description;

@Inject
String date;

@Inject
String URL;

@Inject
@Named("sling:resourceType")
String slingResourceType;

public String getDescription() {
return description;
}

public String getDate() {
return date;
}

public String getURL() {
return URL;
}

public String getSlingResourceType() {
return slingResourceType;
}

public String getTitle() {
return title;
}
}

 

Please refer the below article:

https://experienceleague.adobe.com/docs/experience-manager-learn/foundation/development/develop-slin...

http://www.sgaemsolutions.com/2017/06/sling-model-exporter-in-aem-63.html

 

Hope this helps!

Thanks! 

View solution in original post

2 Replies
asutosh_jena
Correct answer by
Community Advisor
Community Advisor

Hi @ashwinikhaple 
If there is a sling model available and you want to fetch the same properties as a JSON response,so there is no need to create a Sling Servlet. You just need to export your sling model using jackson exporter and that’s all. Sling Model Exporter can be used as a web service or as a rest API.

 

Sling Model Exporter was introduced in Sling Models v1.3.0 which allows new annotations to be added to Sling Models that define how the Model an can be exported as a different Java object, or more commonly, serialized into a different format such as JSON.

 

@Model(adaptables = Resource.class, resourceType = { "wknd/components/content/image" }, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
@Exporter(name = "jackson", extensions = "json", options = { @ExporterOption(name = "SerializationFeature.WRITE_DATES_AS_TIMESTAMPS", value = "true") })
public class ModelComponent {

@Inject
String title;

@Inject
String description;

@Inject
String date;

@Inject
String URL;

@Inject
@Named("sling:resourceType")
String slingResourceType;

public String getDescription() {
return description;
}

public String getDate() {
return date;
}

public String getURL() {
return URL;
}

public String getSlingResourceType() {
return slingResourceType;
}

public String getTitle() {
return title;
}
}

 

Please refer the below article:

https://experienceleague.adobe.com/docs/experience-manager-learn/foundation/development/develop-slin...

http://www.sgaemsolutions.com/2017/06/sling-model-exporter-in-aem-63.html

 

Hope this helps!

Thanks! 

View solution in original post