| ... | @@ -793,6 +793,9 @@ pub fn stringify(writer: anytype, value: anytype, options: std.json.Stringify.Op | ... | @@ -793,6 +793,9 @@ pub fn stringify(writer: anytype, value: anytype, options: std.json.Stringify.Op |
| 793 | } | 793 | } |
| 794 | switch (@typeInfo(T)) { | 794 | switch (@typeInfo(T)) { |
| 795 | .@"struct" => |info| { | 795 | .@"struct" => |info| { |
| | 796 | if (@hasDecl(T, "stringifyJson")) { |
| | 797 | return T.stringifyJson(value, writer, options, @This()); |
| | 798 | } |
| 796 | try writer.writeAll("{"); | 799 | try writer.writeAll("{"); |
| 797 | inline for (info.fields, 0..) |field, i| blk: { | 800 | inline for (info.fields, 0..) |field, i| blk: { |
| 798 | const field_value = @field(value, field.name); | 801 | const field_value = @field(value, field.name); |
| ... | @@ -818,6 +821,9 @@ pub fn stringify(writer: anytype, value: anytype, options: std.json.Stringify.Op | ... | @@ -818,6 +821,9 @@ pub fn stringify(writer: anytype, value: anytype, options: std.json.Stringify.Op |
| 818 | try writer.writeAll(if (value) "true" else "false"); | 821 | try writer.writeAll(if (value) "true" else "false"); |
| 819 | }, | 822 | }, |
| 820 | .@"union" => { | 823 | .@"union" => { |
| | 824 | if (@hasDecl(T, "stringifyJson")) { |
| | 825 | return T.stringifyJson(value, writer, options, @This()); |
| | 826 | } |
| 821 | switch (value) { | 827 | switch (value) { |
| 822 | inline else => |v, t| { | 828 | inline else => |v, t| { |
| 823 | try writer.writeAll("{"); | 829 | try writer.writeAll("{"); |