diff --git a/src/browser/webapi/net/Response.zig b/src/browser/webapi/net/Response.zig index 3e423691..4995e600 100644 --- a/src/browser/webapi/net/Response.zig +++ b/src/browser/webapi/net/Response.zig @@ -120,15 +120,11 @@ pub fn getText(self: *const Response, page: *Page) !js.Promise { pub fn getJson(self: *Response, page: *Page) !js.Promise { const body = self._body orelse ""; - const value = std.json.parseFromSliceLeaky( - std.json.Value, - page.call_arena, - body, - .{}, - ) catch |err| { + const value = js.Value.fromJson(page.js, body) catch |err| { return page.js.rejectPromise(.{@errorName(err)}); }; - return page.js.resolvePromise(value); + const pvalue = try value.persist(); + return page.js.resolvePromise(pvalue); } pub const JsApi = struct { diff --git a/src/browser/webapi/net/XMLHttpRequest.zig b/src/browser/webapi/net/XMLHttpRequest.zig index fc216016..0d903249 100644 --- a/src/browser/webapi/net/XMLHttpRequest.zig +++ b/src/browser/webapi/net/XMLHttpRequest.zig @@ -67,7 +67,7 @@ const ReadyState = enum(u8) { const Response = union(ResponseType) { text: []const u8, - json: std.json.Value, + json: js.Value, document: *Node.Document, }; @@ -254,8 +254,9 @@ pub fn getResponse(self: *XMLHttpRequest, page: *Page) !?Response { const res: Response = switch (self._response_type) { .text => .{ .text = data }, .json => blk: { - const parsed = try std.json.parseFromSliceLeaky(std.json.Value, page.call_arena, data, .{}); - break :blk .{ .json = parsed }; + const value = try js.Value.fromJson(page.js, data); + const pvalue = try value.persist(); + break :blk .{ .json = pvalue }; }, .document => blk: { const document = try page._factory.node(Node.Document{ ._proto = undefined, ._type = .generic });