https://github.com/standardloop/c-json
c-json is a json library written in C.
This was built to learn about lexing, parsing, and data structures such as dynamic arrays and hashmaps.
#include <stdio.h>
#include <stdlib.h>
#include "./json.h" // or <standardloop/json.h> if using dynamic library
int main(void)
{
JSON *json = StringToJSON("[1, 2, {\"key\": \"value\"}, \"hello\"]");
if (json == NULL)
{
return EXIT_FAILURE;
}
PrintJSON(json);
FreeJSON(json);
return EXIT_SUCCESS;
}#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "./json.h" // or <standardloop/json.h> if using dynamic library
int main(void)
{
JSON *json = JSONFromFile("example.json");
if (json == NULL)
{
return EXIT_FAILURE;
}
PrintJSON(json);
FreeJSON(json);
return EXIT_SUCCESS;
}#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "./json.h" // or <standardloop/json.h> if using dynamic library
int main(void)
{
JSON *json = StringToJSON("[1, 2, {\"key\": \"value\"}, \"hello\"]");
if (json == NULL)
{
return EXIT_FAILURE;
}
char *json_string = JSONToString(json, true);
if (json_string == NULL)
{
return EXIT_FAILURE;
}
printf("%s\n", json_string);
free(json_string);
return EXIT_SUCCESS;
}$ task --list-all$ task$ clang -Werror -Wextra -Wall -Wfree-nonheap-object -std=c17 \
lab.c \
-L/usr/local/lib/standardloop \
-lstandardloop-json \
-o lab- The
taskfilehas a task to compile the code with address sanitizers. - The
taskfilehas a task to run the program with macOSleaks.