Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Himujjal/zig-json5
A JSON5 parser/stringifier for Zig resembling the std.json API
https://github.com/Himujjal/zig-json5
Last synced: about 2 months ago
JSON representation
A JSON5 parser/stringifier for Zig resembling the std.json API
- Host: GitHub
- URL: https://github.com/Himujjal/zig-json5
- Owner: Himujjal
- License: mit
- Created: 2022-10-23T16:55:13.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2022-12-21T21:51:47.000Z (about 2 years ago)
- Last Synced: 2024-08-04T04:05:43.285Z (5 months ago)
- Language: Zig
- Size: 30.3 KB
- Stars: 23
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-zig - zig-json5🗒️A JSON5 Parser/Stringifier written in Zig
README
# [zig-json5](https://github.com/Himujjal/zig-json5)
A [JSON5](https://json5.org) parser/stringifier for Zig that resembles the `std.json` API from the standard library
## Installation
Simply get the `src/main.zig` file using [curl](https://curl.se/) or [wget](https://www.gnu.org/software/wget/):
CURL:
```sh
curl https://raw.githubusercontent.com/Himujjal/zig-json5/master/src/main.zig --output json5.zig
```WGET:
```sh
wget https://raw.githubusercontent.com/Himujjal/zig-json5/master/src/main.zig -O json5.zig
```## Docs
The API is similar to the `std.json` library. Just replace `json` with `json5` wherever possible
For a short tutorial see: [Zig JSON in 5 minutes](https://www.huy.rocks/everyday/01-09-2022-zig-json-in-5-minutes)
A simple example:
```zig
fn parseStringifyAndTest(input: []const u8, expected: []const u8) !void {
const a = std.testing.allocator;var string = std.ArrayList(u8).init(a);
defer string.deinit();var parser = json5.Parser.init(a, false);
defer parser.deinit();var tree = try parser.parse(input);
defer tree.deinit();try tree.root.json5Stringify(.{}, string.writer());
std.testing.expect(mem.eql(u8, string.items, expected)) catch |err| {
std.debug.print("\n == Expected: {s}\n Got: {s} ==\n", .{ expected, string.items });
return err;
};
}
```