Skip to content

Latest commit

 

History

History
45 lines (33 loc) · 1.18 KB

README.md

File metadata and controls

45 lines (33 loc) · 1.18 KB

jprint

/*
 */

#include "jprint.h"

int main(int argc, char **argv) {
    char buf[2048];
    int err;
    jprint_t jp;

    jp_open(&jp, buf, sizeof buf);
    jp_printf(&jp, "{");                // open root node as object 
    jp_printf(&jp, "key: %s", "value"); // writes "key":"value"
    jp_printf(&jp, "int: %d", 1);       // writes "int":1
    jp_printf(&jp, "anArray: [");       // start "anArray": [...] 
    jp_printf(&jp, "%d", 0);            // add a few integers to the array
    jp_printf(&jp, "%d", 1);
    jp_printf(&jp, "%d", 2);
    jp_printf(&jp, "]");                // end the array
    jp_printf(&jp, "}");                // close root node
    err = jp_close(&jp);
    puts(buf);
    return 0;
}

which results in

{"key":"value","int":1,"anArray":[0,1,2]}

This is a library to allow simple generation of JSON.

snprintf() is used to convert integer (int64_t) and double to string. This has been reviewed on Linux, but not on FreeBSD yet.

Note that there is really no special handling for nan, or infinity. These cases are produced in the test, but handling may vary.

gcc -o jprint test.c jprint.c -lm

to generate jprint, which illustrates the tektonics.