JSMN
strictyaml
JSMN | strictyaml | |
---|---|---|
14 | 21 | |
3,553 | 1,411 | |
- | - | |
0.0 | 1.9 | |
about 2 months ago | about 2 months ago | |
C | Python | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
JSMN
-
Building a high performance JSON parser
Like how https://github.com/zserge/jsmn works. I thought it would be neat to have such as parser for https://github.com/vshymanskyy/muon
-
Flattening ASTs (and Other Compiler Data Structures)
One more JSON implementation using this approach is https://github.com/zserge/jsmn.
-
Show HN: WinGPT, AI Assistant for Windows 3.1
Yep! I'm using JSMN (https://github.com/zserge/jsmn), which is a streaming parser that visits each token sequentially, so there's only one copy of each JSON response in memory. I also avoid allocating new intermediate memory whenever possible; for example, to unescape backslashes in the JSON strings, I use a destructive loop that moves the non-backslash characters forward in memory, and truncates the string by moving the null terminator earlier in the string. Not something I'd imagine doing in most environments today, but as you said, it saves a bit of space at the expense of CPU time :)
void DestructivelyUnescapeStr(LPSTR lpInput) {
- A good C library to parse json data
-
Lightweight data serialization/deserialization format
After reviewing several options, I’ve settled on plain old JSON. For parsing, I use https://github.com/zserge/jsmn. For serialization I use https://github.com/rdpoor/jems (disclaimer: I wrote the latter, but others use it as well).
-
jemi: a compact JSON serializer for embedded systems
As mentioned here, it appears that tiny-json is a parser, not a serializer. If you're looking for parsers, I've been very happy with jsmn.
-
What is the proper way to store a RFC3339 date string?
Very small, 4-5 fields but I'm still going to write in binary because I'm trying to reduce dependencies and https://github.com/zserge/jsmn looks like good fit but jsmn only does parsing which I need for parsing some Oauth json data and config.json file. I will be able to dump the state struct in a state.bin file and read it later for comparing it with system time. Not having to write in text fits well for this particular use case. Benefits: Reduced dependencies and almost cost less decoding of the state struct(which the user will never see).
- Jsmn: A minimalistic JSON parser in C
- CJSON – Ultralightweight JSON parser in ANSI C
-
A tiny zero-allocation JSON serializer compatible with C89!
This is my very straight-forward implementation that came to be from the lack of JSON encoding in jsmn:
strictyaml
- StrictYAML
-
XML is better than YAML
NestedText already is the way I use YAML; everything is intepreted as a string. I have some trust in my YAML parser to not mangle most strings. I could use NestedText, but users would be unfamiliar with it, and IIRC the only parsers are in Python. But then I could use StrictYaml too https://github.com/crdoconnor/strictyaml
-
The new type of SQL injection
you can stick to a subset of YAML syntax (e.g. strictYAML)
-
DO YOU YAML?
YAML stands for "YAML Ain’t Markup Language" - this is known as a recursive acronym. YAML is often used for writing configuration files. It’s human readable, easy to understand and can be used with other programming languages. Although YAML is commonly used in many disciplines, it has received criticism on the amoutn of whitespace .yml files have, difficulty in editing, and complexity of the standard. Despite the criticism, properly using YAML ensures that you can reproduce the results of a project and makes sure that the virtual environment packages play nicely with system packages. (If you're looking for another way to share environments there are other alternatives to YAML which include StrictYAML (a type-safe YAML parser) and NestedText)
-
The yaml document from hell
The example you linked provides this as an example of a YAML document that he wants his format to support.
-
The YAML Document from Hell
That safe subset exists and is implemented in a number of languages. It is called strict-yaml: https://hitchdev.com/strictyaml/
-
Hacker News top posts: Jul 3, 2022
StrictYAML\ (33 comments)
-
Why JSON Isn’t a Good Configuration Language (2018)
To me those are in the category of "nice to have", and the problem is that every developer has different preferences for these [1] [2]. But the main features of StrictYaml, like supporting comments and less syntactic noise, I think are pretty uncontroversial, and perhaps it's worth it to get people to switch over for those alone. It doesn't need to be perfect, it just needs to be a significant enough improvement over JSON, and I'd say those two features are more than enough
[1]: https://github.com/crdoconnor/strictyaml/issues/37
[2]: https://github.com/crdoconnor/strictyaml/issues/38
What are some alternatives?
cJSON - Ultralightweight JSON parser in ANSI C
pyyaml - Canonical source repository for PyYAML
json-c - https://github.com/json-c/json-c is the official code repository for json-c. See the wiki for release tarballs for download. API docs at http://json-c.github.io/json-c/
nestedtext - Human readable and writable data interchange format
Jansson - C library for encoding, decoding and manipulating JSON data
ytt - YAML templating tool that works on YAML structure instead of text
RapidJSON - A fast JSON parser/generator for C++ with both SAX/DOM style API
crudini - A utility for manipulating ini files
ArduinoJson - 📟 JSON library for Arduino and embedded C++. Simple and efficient.
yaml-rust - A pure rust YAML implementation.
json - JSON for Modern C++
starlark-go - Starlark in Go: the Starlark configuration language, implemented in Go