authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-07-14 17:44:40 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-07-14 17:44:40 -07:00
log7f12aa0cf95430f318ddf49e9dd7f9722b31d542
treec9ff1c115054c2ec5e88add53037c40fda695fcf
parent064eaacfa3eb81f8930643fabd8b2d741a2d89bf
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

stringify: allow structs and unions to define stringifyJson


1 files changed, 6 insertions(+), 0 deletions(-)

json.zig+6
......@@ -793,6 +793,9 @@ pub fn stringify(writer: anytype, value: anytype, options: std.json.Stringify.Op
793793 }
794794 switch (@typeInfo(T)) {
795795 .@"struct" => |info| {
796 if (@hasDecl(T, "stringifyJson")) {
797 return T.stringifyJson(value, writer, options, @This());
798 }
796799 try writer.writeAll("{");
797800 inline for (info.fields, 0..) |field, i| blk: {
798801 const field_value = @field(value, field.name);
......@@ -818,6 +821,9 @@ pub fn stringify(writer: anytype, value: anytype, options: std.json.Stringify.Op
818821 try writer.writeAll(if (value) "true" else "false");
819822 },
820823 .@"union" => {
824 if (@hasDecl(T, "stringifyJson")) {
825 return T.stringifyJson(value, writer, options, @This());
826 }
821827 switch (value) {
822828 inline else => |v, t| {
823829 try writer.writeAll("{");