Sample code for 30+ languages & platforms
Java

Using Pre-defined JSON Templates

See more JSON Examples

Demonstrates how to predefine a JSON template, and then use it to emit JSON with variable substitutions.

Note: This example requires Chilkat v9.5.0.67 or greater.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.Hashtable;
import com.chilkatsoft.chilkat2.JsonObject;

public class ChilkatExample {

    public static void main(String[] args) {
        // One way to create JSON is to do it in a straightforward manner:
        JsonObject json = new JsonObject();
        json.setEmitCompact(false);
        json.updateString("id", "0001");
        json.updateString("type", "donut");
        json.updateString("name", "Cake");
        json.updateString("image.url", "images/0001.jpg");
        json.updateInt("image.width", 200);
        json.updateInt("image.height", 200);
        json.updateString("thumbnail.url", "images/thumbnails/0001.jpg");
        json.updateInt("thumbnail.width", 32);
        json.updateInt("thumbnail.height", 32);
        System.out.println(json.emit());

        // The JSON created by the above code:

        //     {
        //       "id": "0001",
        //       "type": "donut",
        //       "name": "Cake",
        //       "image": {
        //         "url": "images/0001.jpg",
        //         "width": 200,
        //         "height": 200
        //       },
        //       "thumbnail": {
        //         "url": "images/thumbnails/0001.jpg",
        //         "width": 32,
        //         "height": 32
        //       }
        //     }

        // An alternative is to predefine a template, and then use it to emit with variable substitutions.
        // For example:

        JsonObject jsonTemplate = new JsonObject();
        jsonTemplate.updateString("id", "{$id}");
        jsonTemplate.updateString("type", "donut");
        jsonTemplate.updateString("name", "{$name}");
        jsonTemplate.updateString("image.url", "{$imageUrl}");
        // The "i." indicates that it's an integer variable.
        jsonTemplate.updateString("image.width", "{$i.imageWidth}");
        jsonTemplate.updateString("image.height", "{$i.imageHeight}");
        jsonTemplate.updateString("thumbnail.url", "{$thumbUrl}");
        jsonTemplate.updateString("thumbnail.width", "{$i.thumbWidth}");
        jsonTemplate.updateString("thumbnail.height", "{$i.thumbHeight}");
        // Give this template a name.
        jsonTemplate.predefine("donut");

        // --------------------------------------------------------------------------
        // OK, the template is defined.  Defining a template can be done once
        // at the start of your program, and you can discard the jsonTemplate object (it
        // doesn't need to stick around..)

        // Now we can create instances of the JSON object by name:
        JsonObject jsonDonut = new JsonObject();
        jsonDonut.setEmitCompact(false);
        jsonDonut.loadPredefined("donut");
        System.out.println(jsonDonut.emit());

        // The output is this:

        //     {
        //       "id": "{$id}",
        //       "type": "donut",
        //       "name": "{$name}",
        //       "image": {
        //         "url": "{$imageUrl}",
        //         "width": "{$i.imageWidth}",
        //         "height": "{$i.imageHeight}"
        //       },
        //       "thumbnail": {
        //         "url": "{$thumbUrl}",
        //         "width": "{$i.thumbWidth}",
        //         "height": "{$i.thumbHeight}"
        //       }
        //     }

        // Finally, we can substitute variables like this:
        Hashtable donutValues = new Hashtable();
        donutValues.addStr("id", "0001");
        donutValues.addStr("name", "Cake");
        donutValues.addStr("imageUrl", "images/0001.jpg");
        donutValues.addInt("imageWidth", 200);
        donutValues.addInt("imageHeight", 200);
        donutValues.addStr("thumbUrl", "images/thumbnails/0001.jpg");
        donutValues.addInt("thumbWidth", 32);
        donutValues.addInt("thumbHeight", 32);

        // Emit with variable substitutions:
        boolean omitEmpty = true;
        System.out.println(jsonDonut.emitWithSubs(donutValues, omitEmpty));

        // Output:

        //     {
        //       "id": "0001",
        //       "type": "donut",
        //       "name": "Cake",
        //       "image": {
        //         "url": "images/0001.jpg",
        //         "width": 200,
        //         "height": 200
        //       },
        //       "thumbnail": {
        //         "url": "images/thumbnails/0001.jpg",
        //         "width": 32,
        //         "height": 32
        //       }
        //     }

        // Change some of the values:
        donutValues.addStr("id", "0002");
        donutValues.addStr("imageUrl", "images/0002.jpg");
        donutValues.addStr("thumbUrl", "images/thumbnails/0002.jpg");

        System.out.println(jsonDonut.emitWithSubs(donutValues, omitEmpty));

        // Output:

        //     {
        //       "id": "0002",
        //       "type": "donut",
        //       "name": "Cake",
        //       "image": {
        //         "url": "images/0002.jpg",
        //         "width": 200,
        //         "height": 200
        //       },
        //       "thumbnail": {
        //         "url": "images/thumbnails/0002.jpg",
        //         "width": 32,
        //         "height": 32
        //       }
        //     }
    }
}