From 4229bcf563dc2dba6002667d8a14b4f9d56af872 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 28 Aug 2022 11:11:25 +0800 Subject: [PATCH] feat: add json.zig --- single_files/json.zig | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 single_files/json.zig 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}); +}