diff --git a/single_files/json.zig b/single_files/json.zig new file mode 100644 index 0000000..f7c957c --- /dev/null +++ b/single_files/json.zig @@ -0,0 +1,28 @@ +const std = @import("std"); +const json = std.json; +const payload = + \\{ + \\ "vals": { + \\ "testing": 1, + \\ "production": 42 + \\ }, + \\ "uptime": 9999 + \\} +; +const Config = struct { + vals: struct { testing: u8, production: u8 }, + uptime: u64, +}; +const config = x: { + var stream = json.TokenStream.init(payload); + const res = json.parse(Config, &stream, .{}); + // Assert no error can occur since we are + // parsing this JSON at comptime! + break :x res catch unreachable; +}; +pub fn main() !void { + if (config.vals.production > 50) { + @compileError("only up to 50 supported"); + } + std.log.info("up={d}", .{config.uptime}); +}