Skip to content

Instantly share code, notes, and snippets.

@jerrydboonstra
Forked from sevennineteen/example.json
Last active May 16, 2023 10:05
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jerrydboonstra/bedb5ccbe6200b5d794447ed38aeb342 to your computer and use it in GitHub Desktop.
Save jerrydboonstra/bedb5ccbe6200b5d794447ed38aeb342 to your computer and use it in GitHub Desktop.
Example using Jinja2 to populate a JSON payload template
{ "path": "/content/geometrixx/my-first-jinja-page",
"properties": [
{ "name": "jcr:primaryType",
"value": "cq:Page" }],
"nodes": [
{ "path": "jcr:content",
"properties": [
{ "name": "jcr:primaryType",
"value": "cq:PageContent"},
{ "name": "sling:resourceType",
"value": "geometrixx/components/widepage"},
{ "name": "jcr:title",
"value": "{{ page.title }}" },
{ "name": "cq:template",
"value": "/apps/geometrixx/templates/widepage"},
{ "name": "cq:tags",
"type": "String[]",
"value": {{ page.tags|jsonify }} },
{ "name": "jcr:description",
"value": "{{ page.description }}" },
{ "name": "sling:vanityPath",
"value": "/connector-examples/json/" }]}
]
}
import json
from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('app', 'templates'))
env.filters['jsonify'] = json.dumps
# Template file at ./app/templates/example.json
template = env.get_template('example.json')
page = {
'title': 'Jinja Example Page',
'tags': ['jinja', 'python', 'migration'],
'description': 'This is an example page created using Jinja2 with a JSON template.'
}
print(template.render(page=page))
@jerrydboonstra
Copy link
Author

upgrade to python 3.x which wants parens on the print statements

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment