Scoping FTW
I will try to explain scoping. It is a simple concept, but hard to explain.
The most common example of scoping is browsing the folder structures on your computer when trying to find a file. In JSON, a variable that contains other variables is similar to a folder on your computer. When you click into a folder on your computer, you have access to the files inside. In a similar way, when you scope into a variable in JSON, you have direct access to the other variables inside.
Take the following JSON example:
{
"items": [
{
"fullUrl": "/notebook/a-post-a-post",
"title": "A Post! A Post!",
"data": {
"commentCount": 0,
"body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque tincidunt aliquam tortor eu volutpat. Sed sem mauris, faucibus a hendrerit non, vulputate non dolor. Morbi fermentum tortor et lectus ultrices vulputate. Morbi tincid boblong sipe..."
}
},
{
"fullUrl": "/notebook/blog-ideas",
"title": "Blog Ideas",
"data": {
"commentCount": 0,
"body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque tincidunt aliquam tortor eu volutpat. Sed sem mauris, faucibus a hendrerit non, vulputate non dolor. Morbi fermentum tortor et lectus ultrices vulputate. Morbi rhoncus faucibus diam ..."
}
}
]
}
The variable "items" contains other variables. And inside "items", the variable "data" also contains other variables. Think of these as folders (or sections).
When you write out a section in JSON, it is like entering a folder, you have more direct access to the files within.
Ok. Now let's see JSON Template scoping in action:
Example:
If you want to add the "body" of each item, you could write:
{.repeated section items}
{data.body}
{.end}
Or, you could scope into the "data" variable and do it this way:
{.repeated section items}
{.section data}
{body}
{.end}
{.end}
You can even scope down into the "body" variable and use the index character (@) to access the "body" variable (explained more on the basic syntax page):
{.repeated section items}
{.section data}
{.section body}
{@}
{.end}
{.end}
{.end}
