29 lines
703 B
Zig
29 lines
703 B
Zig
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});
|
|
}
|