Sample code for 30+ languages & platforms
Zig

JSON Escape and Unescape a String

Demonstrates how to JSON escape or unescape a string.

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 sb = try chilkat.StringBuilder.init();
    defer sb.deinit();

    sb.append("backslash: \\\\, A: \\u0041") catch {};
    std.debug.print("{s}\n", .{try sb.getAsString(alloc)});

    // The output is:
    //    backslash: \\, A: \u0041

    // The keyword "json" can be used
    // to escape and unescape.  To escape is to encode.  To unescape is to decode.

    // Unescape (decode) the string in sb.
    sb.decode("json", "utf-8") catch {};
    std.debug.print("{s}\n", .{try sb.getAsString(alloc)});

    // After JSON unescaping:
    //    backslash: \, A: A

    // Now JSON escape the string.
    sb.encode("json", "utf-8") catch {};
    std.debug.print("{s}\n", .{try sb.getAsString(alloc)});

    // After JSON escaping:
    //    backslash: \\, A: A

    // Note: The "A" is not escaped to "\u0041" because there is no need.
    // The "\uXXXX" format would be produced for non-printable control chars.
}