A JSON5 parser/stringifier for Zig that resembles the std.json
API from the standard library
Simply get the src/main.zig
file using curl or wget:
CURL:
curl https://raw.githubusercontent.com/Himujjal/zig-json5/master/src/main.zig --output json5.zig
WGET:
wget https://raw.githubusercontent.com/Himujjal/zig-json5/master/src/main.zig -O json5.zig
The API is similar to the std.json
library. Just replace json
with json5
wherever possible
For a short tutorial see: Zig JSON in 5 minutes
A simple example:
fn parseStringifyAndTest(input: []const u8, expected: []const u8) !void {
const a = std.testing.allocator;
var string = std.ArrayList(u8).init(a);
defer string.deinit();
var parser = json5.Parser.init(a, false);
defer parser.deinit();
var tree = try parser.parse(input);
defer tree.deinit();
try tree.root.json5Stringify(.{}, string.writer());
std.testing.expect(mem.eql(u8, string.items, expected)) catch |err| {
std.debug.print("\n == Expected: {s}\n Got: {s} ==\n", .{ expected, string.items });
return err;
};
}