Sj.h: A tiny little JSON parsing library in ~150 lines of C99

sj.h A tiny little JSON parsing library ~150 lines of C99 Zero-allocations with minimal state Error messages with line:column: location No number parsing: strtod, atoi? Handle them how you want No string parsing: bring your own unicode surrogate pair handling (or don’t) Usage A small program to load a rectangle from a JSON string into a Rect struct: char *json_text = “{ “x”: 10, “y”: 20, “w”: 30, “h”: 40 }”; typedef struct { int x, y, w, h; } Rect; bool eq(sj_Value val, char *s) { size_t len = val.end – val.start; return strlen(s) == len && !memcmp(s, val.start, len); } int main(void) { Rect rect = {0}; sj_Reader r = sj_reader(json_text, strlen(json_text)); sj_Value obj = sj_read(&r); sj_Value key, val; while (sj_iter_object(&r, obj, &key, &val)) { if…

Read more on Hacker News