Home

Awesome

JSON Templating

Simple cli tool to resolve JSON templating.

The usage of the tool is:

$ jsont input.json params.json

The json string template syntax is: {{variableName}}. The replace only happens in JSON string values. The left braces can be escaped by {{lb}}. The right braces do not need to be escaped. "lb" cannot be used as a variable name. Variable name can only be \w+. The application writes the result to stdout.

Example

input.json:

{
    "key1": "some {{var1}}",
    "key2": {
        "{{var1}}": "{{var3}} {{var4}} {{var5}}"
        },
        "key3": [
            "{{var2}} abc",
            "escaped braces: {{lb}}{{lb}}var3}}"
        ]
}

params.json:

{
    "var1": "value1 {{var2}}",
    "var2": "value2 {{lb}}{{lb}}var3}}",
    "var3": "value3",
    "var4": "value4",
    "var5": "value5"
}

Then the output will be:

{
    "key1": "some value1 {{var2}}",
    "key2": {
        "{{var1}}": "value3 value4 value5"
        },
        "key3": [
            "value2 {{lb}}{{lb}}var3}} abc",
            "escaped braces: {{var3}}"
        ]
}

Recursive mode

Add a switch -r to enable the recursive mode.

Example for recursive mode

input.json:

{
    "key1": "{{var1}} {{var2}} {{var3}}",
    "key2": {
        "{{var2}}": "{{var4}}"
        },
        "{{var3}}": [
            "{{var5}} {{var6}}"
            ]
}

params.json:

{
    "var1": "{{var2}}",
    "var2": "{{var3}}",
    "var3": "3",
    "var4": "4 -> {{var3}}",
    "var5": "{{varNONO}}"
}

output:

{
    "key1": "3 3 3",
    "key2": {
        "{{var2}}": "4 -> 3"
        },
        "{{var3}}": [
            "{{varNONO}} {{var6}}"
            ]
}