Skip to content

Repository files navigation

c-json

https://github.com/standardloop/c-json

GitHub Release Platform: macOS C Version

Background

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.

Dependencies

Example Programs

StringToJSON

#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;
}

JSONFromFile

#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;
}

JSONToString

#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;
}

Building

To see all avaiable

$ task --list-all

To build a test program

$ task

Checking for Leaks

  • The taskfile has a task to compile the code with address sanitizers.
  • See LEAKS.md

Docs

Docs are generated a first generated with doxygen as xml and then moxygen reads the xml to output markdown in the docs/ folder.

This repo uses reusable tasks from https://github.com/standardloop/taskfiles/

Precommit

This repo uses prek.

Please run prek install.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages