Sample code for 30+ languages & platforms
Zig

JSON AddObjectCopyAt Example

Demonstrates the AddObjectCopyAt function.

Note: This example requires Chilkat v9.5.0.82 or above.

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();

    const json = try chilkat.JsonObject.init();
    defer json.deinit();
    json.load("{ \"name\": \"John\", \"marbles\": 100 }") catch {};

    const json2 = try chilkat.JsonObject.init();
    defer json2.deinit();
    json2.load("{\"street\":\"1200 Elm St.\",\"city\":\"Springfield\",\"zip\":60606}") catch {};

    // Copy the contents of json2 to a new member object named "addr".
    // Insert it in the 2nd position.
    json.addObjectCopyAt(1, "addr", json2) catch {};

    std.debug.print("{s}\n", .{try json.emit(alloc)});
    // Expected output is:  {"name":"John","addr":{"street":"1200 Elm St.","city":"Springfield","zip":60606},"marbles":100}

    // Note: Modifying the contents of json does not modify the contents of json2 (because the contents of json2 were copied).
    // For example:
    json.updateString("addr.street", "1000 Oak St.") catch {};
    std.debug.print("{s}\n", .{try json.emit(alloc)});
    // Expected output is:  {"name":"John","addr":{"street":"1000 Oak St.","city":"Springfield","zip":60606},"marbles":100}

    std.debug.print("{s}\n", .{try json2.emit(alloc)});
    // Expected output is: {"street":"1200 Elm St.","city":"Springfield","zip":60606}
}