feat: add json.zig
This commit is contained in:
28
single_files/json.zig
Normal file
28
single_files/json.zig
Normal file
@@ -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});
|
||||
}
|
||||
Reference in New Issue
Block a user