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