feat: add allocating json encode/decode functions to cbor
This commit is contained in:
parent
d20e071a4d
commit
d159ba0632
1 changed files with 30 additions and 0 deletions
30
src/cbor.zig
30
src/cbor.zig
|
@ -810,6 +810,15 @@ pub fn toJson(cbor_buf: []const u8, json_buf: []u8) CborJsonError![]const u8 {
|
||||||
return fbs.getWritten();
|
return fbs.getWritten();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn toJsonAlloc(a: std.mem.Allocator, cbor_buf: []const u8) CborJsonError![]const u8 {
|
||||||
|
var buf = std.ArrayList(u8).init(a);
|
||||||
|
defer buf.deinit();
|
||||||
|
var s = json.writeStream(buf.writer(), .{});
|
||||||
|
var iter: []const u8 = cbor_buf;
|
||||||
|
try JsonStream(@TypeOf(buf)).jsonWriteValue(&s, &iter);
|
||||||
|
return buf.toOwnedSlice();
|
||||||
|
}
|
||||||
|
|
||||||
pub fn toJsonPretty(cbor_buf: []const u8, json_buf: []u8) CborJsonError![]const u8 {
|
pub fn toJsonPretty(cbor_buf: []const u8, json_buf: []u8) CborJsonError![]const u8 {
|
||||||
var fbs = fixedBufferStream(json_buf);
|
var fbs = fixedBufferStream(json_buf);
|
||||||
var s = json.writeStream(fbs.writer(), .{ .whitespace = .indent_1 });
|
var s = json.writeStream(fbs.writer(), .{ .whitespace = .indent_1 });
|
||||||
|
@ -818,6 +827,15 @@ pub fn toJsonPretty(cbor_buf: []const u8, json_buf: []u8) CborJsonError![]const
|
||||||
return fbs.getWritten();
|
return fbs.getWritten();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn toJsonPrettyAlloc(a: std.mem.Allocator, cbor_buf: []const u8) CborJsonError![]const u8 {
|
||||||
|
var buf = std.ArrayList(u8).init(a);
|
||||||
|
defer buf.deinit();
|
||||||
|
var s = json.writeStream(buf.writer(), .{ .whitespace = .indent_1 });
|
||||||
|
var iter: []const u8 = cbor_buf;
|
||||||
|
try JsonStream(@TypeOf(buf)).jsonWriteValue(&s, &iter);
|
||||||
|
return buf.toOwnedSlice();
|
||||||
|
}
|
||||||
|
|
||||||
fn writeJsonValue(writer: anytype, value: json.Value) !void {
|
fn writeJsonValue(writer: anytype, value: json.Value) !void {
|
||||||
try switch (value) {
|
try switch (value) {
|
||||||
.array => |_| unreachable,
|
.array => |_| unreachable,
|
||||||
|
@ -917,3 +935,15 @@ pub fn fromJson(json_buf: []const u8, cbor_buf: []u8) ![]const u8 {
|
||||||
_ = try jsonScanUntil(writer, &scanner, .end_of_document);
|
_ = try jsonScanUntil(writer, &scanner, .end_of_document);
|
||||||
return stream.getWritten();
|
return stream.getWritten();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn fromJsonAlloc(a: std.mem.Allocator, json_buf: []const u8) ![]const u8 {
|
||||||
|
var stream = std.ArrayList(u8).init(a);
|
||||||
|
defer stream.deinit();
|
||||||
|
const writer = stream.writer();
|
||||||
|
|
||||||
|
var scanner = json.Scanner.initCompleteInput(a, json_buf);
|
||||||
|
defer scanner.deinit();
|
||||||
|
|
||||||
|
_ = try jsonScanUntil(writer, &scanner, .end_of_document);
|
||||||
|
return stream.toOwnedSlice();
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue