Zig Requires Chilkat v11.1.0+
Zig
Create more Complex JSON Document
See more JSON Examples
Sample code to create the following JSON document:
{
"Title": "The Cuckoo's Calling",
"Author": "Robert Galbraith",
"Genre": "classic crime novel",
"Detail": {
"Publisher": "Little Brown",
"Publication_Year": 2013,
"ISBN-13": 9781408704004,
"Language": "English",
"Pages": 494
},
"Price": [
{
"type": "Hardcover",
"price": 16.65
},
{
"type": "Kindle Edition",
"price": 7.00
}
]
}
Chilkat Zig Downloads
const std = @import("std");
const chilkat = @import("chilkat");
pub fn main(init: std.process.Init) !void {
const alloc = init.arena.allocator();
const json = try chilkat.JsonObject.init();
defer json.deinit();
// The only reason for failure in the following lines of code would be an out-of-memory condition..
// An index value of -1 is used to append at the end.
try json.addStringAt(-1, "Title", "The Cuckoo's Calling");
try json.addStringAt(-1, "Author", "Robert Galbraith");
try json.addStringAt(-1, "Genre", "classic crime novel");
// Let's create the Detail JSON object:
const detail = try chilkat.JsonObject.init();
defer detail.deinit();
json.appendObject2("Detail", detail) catch {};
try detail.addStringAt(-1, "Publisher", "Little Brown");
try detail.addIntAt(-1, "Publication_Year", 2013);
try detail.addNumberAt(-1, "ISBN-13", "9781408704004");
try detail.addStringAt(-1, "Language", "English");
try detail.addIntAt(-1, "Pages", 494);
// Add the array for Price
const a_price = try chilkat.JsonArray.init();
defer a_price.deinit();
json.appendArray2("Price", a_price) catch {};
// Entry in aPrice will be a JSON object.
// Append a new/empty ojbect to the end of the aPrice array.
const price_obj = try chilkat.JsonObject.init();
defer price_obj.deinit();
a_price.addObjectAt2(-1, price_obj) catch {};
try price_obj.addStringAt(-1, "type", "Hardcover");
try price_obj.addNumberAt(-1, "price", "16.65");
a_price.addObjectAt2(-1, price_obj) catch {};
try price_obj.addStringAt(-1, "type", "Kindle Edition");
try price_obj.addNumberAt(-1, "price", "7.00");
json.setEmitCompact(false);
std.debug.print("{s}\n", .{try json.emit(alloc)});
}