Sample code for 30+ languages & platforms
Zig

Load a JsonArray

See more JSON Examples

Demonstrates how to load a JsonArray.

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

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    // This example requires Chilkat v9.5.0.64 or greater.

    // Loading into a new JSON array is simple and straightforward.
    const a = try chilkat.JsonArray.init();
    defer a.deinit();
    a.load("[ 1,2,3,4 ]") catch {};

    // Output:  [1,2,3,4]
    std.debug.print("{s}\n", .{try a.emit(alloc)});
    std.debug.print("--------\n", .{});

    // The JsonArray's Load and LoadSb methods have a peculiar behavior when
    // it is already part of a JSON document.  In this case, the JsonArray
    // becomes detached, and the original document remains unchanged.
    // This is intentional due to the nature of the internal implementation.
    // For example:

    const json = try chilkat.JsonObject.init();
    defer json.deinit();
    json.load("{ \"abc\": [ 1,2,3,4 ] }") catch {};

    // Output:  (json) {"abc":[1,2,3,4]}
    std.debug.print("(json) {s}\n", .{try json.emit(alloc)});
    std.debug.print("--------\n", .{});

    const abc = try json.arrayOf("abc");
    defer abc.deinit();
    // When Load is called, abc becomes it's own document, and the original is not modified.
    abc.load("[ 5,6,7,8 ]") catch {};

    // Output: (abc) [5,6,7,8]
    std.debug.print("(abc) {s}\n", .{try abc.emit(alloc)});
    std.debug.print("--------\n", .{});

    // Output: (json) {"abc":[1,2,3,4]}
    std.debug.print("(json) {s}\n", .{try json.emit(alloc)});
    std.debug.print("--------\n", .{});
}