authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-07-10 19:59:14 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-07-10 19:59:14 -07:00
log7bb868681e0443fd44169042e91ecb0e4e651f8d
tree6d4eeff56247546f29a8bc7292f253d00b27184f
parent888ecef1039e97e1812cfcefcb4bfde2441ed353
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

stringify: support non-utf8 strings


1 files changed, 10 insertions(+), 1 deletions(-)

json.zig+10-1
...@@ -743,7 +743,16 @@ pub fn stringify(writer: anytype, value: anytype, options: std.json.Stringify.Op...@@ -743,7 +743,16 @@ pub fn stringify(writer: anytype, value: anytype, options: std.json.Stringify.Op
743 try writer.writeAll("\"");743 try writer.writeAll("\"");
744 }744 }
745 } else {745 } else {
746 var view = std.unicode.Utf8View.init(value) catch return error.Unexpected;746 var view = std.unicode.Utf8View.init(value) catch {
747 try writer.writeAll("\"");
748 for (value) |c| {
749 try writer.writeAll(switch (c) {
750 else => "\\u00" ++ extras.to_hex([_]u8{c}),
751 });
752 }
753 try writer.writeAll("\"");
754 return;
755 };
747 var iter = view.iterator();756 var iter = view.iterator();
748 try writer.writeAll("\"");757 try writer.writeAll("\"");
749 while (iter.nextCodepointSlice()) |sl| {758 while (iter.nextCodepointSlice()) |sl| {