JSON
JSON1 is a popular format for serializing or exchanging human-readable data using key/value pairs.
JSON Decoding
You can decode a JSON-encoded string with the json_decode() function:
{% set json_string = "{\"name\":\"Joe Customer\",\"order_id\":12345}" %}
{% set json = json_decode(json_string) %}
Customer: {{json.name}}
Order #: {{json.order_id}}
Customer: Joe Customer
Order #: 12345
This returns an object.
JSON Modification
You can construct or modify a JSON object using the dict_set() function:
{% set json = {'name': 'Joe Customer', 'order_id': 12345} %}
{% set json = dict_set(json, 'order_id', 54321) %}
{% set json = dict_set(json, 'status.text', 'shipped') %}
{% set json = dict_set(json, 'status.tracking_id', 'Z1F238') %}
Customer: {{json.name}}
Order #: {{json.order_id}}
Status: {{json.status.text}}
Tracking #: {{json.status.tracking_id}}
Customer: Joe Customer
Order #: 54321
Status: shipped
Tracking #: Z1F238
JSON Encoding
You can encode any variable as a JSON string with the json_encode filter:
{% set json = {'name': 'Joe Customer'} %}
{% set json = dict_set(json, 'order_id', 54321) %}
{% set json = dict_set(json, 'status.text', 'shipped') %}
{% set json = dict_set(json, 'status.tracking_id', 'Z1F238') %}
{{json|json_encode}}
{"name":"Joe Customer","order_id":54321,"status":{"text":"shipped","tracking_id":"Z1F238"}}
JSON Prettification
You can “prettify” a JSON string with the json_pretty filter:
{% set json = {'name': 'Joe Customer'} %}
{% set json = dict_set(json, 'order_id', 54321) %}
{% set json = dict_set(json, 'status.text', 'shipped') %}
{% set json = dict_set(json, 'status.tracking_id', 'Z1F238') %}
{{json|json_encode|json_pretty}}
{
"name": "Joe Customer",
"order_id": 54321,
"status": {
"text": "shipped",
"tracking_id": "Z1F238"
}
}
References
-
Wikipedia: JSON - https://en.wikipedia.org/wiki/JSON ↩