postcard
JSMN
postcard | JSMN | |
---|---|---|
7 | 14 | |
708 | 3,553 | |
- | - | |
5.9 | 0.0 | |
12 days ago | about 2 months ago | |
Rust | C | |
Apache License 2.0 | 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.
postcard
-
Best format for high-performance Serde?
I've been enjoying postcard as a lightweight efficient binary serialization.
-
Ractor: not just another actor framework
That said, postcard is not a self describing format (so everyone needs the same schema, no changes allowed), but I do have a tracking issue open for ways to handle this in the future.
-
Are there any serialization crates that do Varint encoding without Zigzag encoding?
For example, look at the Postcard serializer for inspiration.
-
Hey Rustaceans! Got a question? Ask here! (51/2022)!
Serde should be no_std, I have used it embedded with crates such as postcard. You can see how postcard disables default features of serde here : https://github.com/jamesmunns/postcard/blob/main/Cargo.toml
-
jemi: a compact JSON serializer for embedded systems
Another option that may work for some is SerDe on rust. You just write a struct with the fields you want #[derive(Serialize, Deserialize)] above it, and if codegens the functions to deserialize that struct from JSON and serialize it back. Example looks like this https://docs.rs/serde_json/latest/serde_json/#creating-json-by-serializing-data-structures (but you have to use serde-json-core if you don’t have an allocator). Can also easily reserialize to something small like postcard that’s meant for embedded storage.
-
Karmem: A fast binary serialization format faster than Google Flatbuffers
https://github.com/jamesmunns/postcard
postcard seems like it would be particularly strong for the wasm use case as it produces small messages that are light in memory.
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:
What are some alternatives?
tinycbor - Concise Binary Object Representation (CBOR) Library
cJSON - Ultralightweight JSON parser in ANSI C
karmem - Karmem is a fast binary serialization format, faster than Google Flatbuffers and optimized for TinyGo and WASM.
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/
ractor - Rust actor framework
Jansson - C library for encoding, decoding and manipulating JSON data
json-maker - C library used to code JSON objects in null-terminated strings
RapidJSON - A fast JSON parser/generator for C++ with both SAX/DOM style API
speedy - A fast binary serialization framework
ArduinoJson - 📟 JSON library for Arduino and embedded C++. Simple and efficient.
tiny-json - The tiny-json is a versatile and easy to use json parser in C suitable for embedded systems. It is fast, robust and portable.
json - JSON for Modern C++