nanopb
JSMN
nanopb | JSMN | |
---|---|---|
19 | 14 | |
4,066 | 3,559 | |
1.4% | - | |
7.9 | 0.0 | |
9 days ago | about 2 months ago | |
C | C | |
zlib 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.
nanopb
- Nanopb โ Protocol Buffers for Embedded Systems
-
Looking for a data serialization/deserialization library for use in an embedded system
While I don't have much experience with it directly, I do know that Google's protobuf was designed with minimal footprint capabilities in mind. While it might not work out-the-box for embedded systems, it looks like there is a well maintained open source library NanoPB that "is a small code-size Protocol Buffers implementation in ansi C. It is especially suitable for use in microcontrollers, but fits any memory restricted system." And for added reassurance, it looks like Chromium has a dependency on NanoPB.
-
Embedded communication protocols doc gen
nanopb
-
Lightweight data serialization/deserialization format
Protocol buffers are designed for this. Consider using nanopb on the device side.
-
serialization protocol for rf messages in C
I think you're looking for nanopb, the lightweight implementation of Google's protocol buffers.
-
How to create a program that sends to and receive data from Arduino via Bluetooth using C?
In that runtime environment, using only C is indeed the (very) safe "bet". In particular, I might personally prefer using Nanopb - Protocol Buffers for Embedded Systems.
-
Is a packed struct always the same in size?
I know itโs not the question you asked, but the answer might be this: https://github.com/nanopb/nanopb
-
ESP-Now: multiple devices, but how to do multiple types of data?
The OTHER way to do it is with protobufs, since they don't encode parts of the message that aren't included (that is: any missing part of the message has 0 transmission overhead). nanopb works well on the ESP32.
-
looking for c++ libraries whose equivalent c libraries are also present..
You could look at my library Embedded Proto and Nanopb. If you have any questions let me know.
- How many of you do you actually use C++ for device drivers?
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?
protobuf-c - Protocol Buffers implementation in C
cJSON - Ultralightweight JSON parser in ANSI C
EmbeddedProto - Embedded Proto is a C++ Protocol Buffers implementation specifically suitable for microcontrollers. It is small, reliable and easy to use.
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/
nanopb-example - This is a simple project created to test the capabilities of Google's protobuf C implementation, nanopb.
Jansson - C library for encoding, decoding and manipulating JSON data
raylib - A simple and easy-to-use library to enjoy videogames programming
RapidJSON - A fast JSON parser/generator for C++ with both SAX/DOM style API
modern-embedded-programming-course - Companion repository to the "Modern Embedded Systems Programming" video course.
ArduinoJson - ๐ JSON library for Arduino and embedded C++. Simple and efficient.
stuff_sack - Efficient multi-language message packing / serialization.
json - JSON for Modern C++