No description, website, or topics provided.
C
Switch branches/tags
Nothing to show
Latest commit e14f3fd Apr 8, 2014 @jskorpan jskorpan Merge pull request #1 from uucidl/f-clang-wall-wextra-compilation-fixes
F clang wall wextra compilation fixes
Permalink
Failed to load latest commit information.
3rdparty remove unused function Dec 1, 2013
src remove extra comment Dec 1, 2013
tests Integrated ultrajson 1.32 Jun 10, 2013
LICENSE.txt Updated license Apr 26, 2013
README.rst Update README.rst Apr 29, 2013

README.rst

ujson4c

A more user friendly layer for decoding JSON in C/C++ based on the ultra fast UltraJSON library

Usage

Copy all of the files from /src and /3rdparty into a folder of choice in your own project. #include ujdecode.h read more about the API in ujdecode.h

Example:

UJObject obj;
void *state;
const char input[] = "{\"name\": \"John Doe\", \"age\": 31, \"number\": 1337.37, \"address\": { \"city\": \"Uppsala\", \"population\": 9223372036854775807 } }";
size_t cbInput = sizeof(input) - 1;

const wchar_t *personKeys[] = { L"name", L"age", L"number", L"address"};
UJObject oName, oAge, oNumber, oAddress;

obj = UJDecode(input, cbInput, NULL, &state);

if (UJObjectUnpack(obj, 4, "SNNO", personKeys, &oName, &oAge, &oNumber, &oAddress) == 4)
{
    const wchar_t *addressKeys[] = { L"city", L"population" };
    UJObject oCity, oPopulation;

    const wchar_t *name = UJReadString(oName, NULL);
    int age = UJNumericInt(oAge);
    double number = UJNumericFloat(oNumber);

    if (UJObjectUnpack(oAddress, 2, "SN", addressKeys, &oCity, &oPopulation) == 2)
    {
        const wchar_t *city;
        long long population;
        city = UJReadString(oCity, NULL);
        population = UJNumericLongLong(oPopulation);
    }
}

UJFree(state);