Beispiel #1
0
PARCJSON *
parcBasicStats_ToJSON(const PARCBasicStats *stats)
{
    PARCJSON *result = parcJSON_Create();

    if (result != NULL) {
        PARCJSONPair *pair = parcJSONPair_CreateFromDouble("maximum", stats->maximum);
        parcJSON_AddPair(result, pair);
        parcJSONPair_Release(&pair);
        
        pair = parcJSONPair_CreateFromDouble("minimum", stats->minimum);
        parcJSON_AddPair(result, pair);
        parcJSONPair_Release(&pair);

        pair = parcJSONPair_CreateFromDouble("mean", stats->mean);
        parcJSON_AddPair(result, pair);
        parcJSONPair_Release(&pair);
        
        pair = parcJSONPair_CreateFromDouble("variance", stats->variance);
        parcJSON_AddPair(result, pair);
        parcJSONPair_Release(&pair);

        pair = parcJSONPair_CreateFromInteger("count", stats->count);
        parcJSON_AddPair(result, pair);
        parcJSONPair_Release(&pair);
    }

    return result;
}
Beispiel #2
0
PARCJSONValue *
parcJSONValue_ObjectParser(PARCJSONParser *parser)
{
    PARCJSONValue *result = NULL;

    // absorb the (required) '{' character.
    if (parcJSONParser_NextChar(parser) == '{') {
        PARCJSON *json = parcJSON_Create();

        while (parcJSONParser_Remaining(parser)) {
            char c = parcJSONParser_PeekNextChar(parser);
            if (c == '}') {
                // Absorb the '}' and terminate.
                parcJSONParser_NextChar(parser);
                result = parcJSONValue_CreateFromJSON(json);
                break;
            } else if (c == ',') {
                // absorb the ',' character and continue
                parcJSONParser_NextChar(parser);
            } else if (c == '"') {
                PARCJSONPair *pair = parcJSONPair_Parser(parser);
                if (pair == NULL) {
                    break;
                }
                parcJSON_AddPair(json, pair);
                parcJSONPair_Release(&pair);
            } else {
                break;
            }
        }
        parcJSON_Release(&json);
    }

    return result;
}
Beispiel #3
0
LONGBOW_TEST_CASE(JSON, parcJSON_Add)
{
    PARCJSON *json = parcJSON_Create();
    {
        PARCBuffer *string = parcBuffer_WrapCString("string");
        PARCJSONValue *stringValue = parcJSONValue_CreateFromString(string);
        PARCBuffer *stringName = parcBuffer_WrapCString("string");
        PARCJSONPair *pair = parcJSONPair_Create(stringName, stringValue);
        parcJSON_AddPair(json, pair);
        parcJSONPair_Release(&pair);
        parcBuffer_Release(&stringName);
        parcJSONValue_Release(&stringValue);
        parcBuffer_Release(&string);
    }
    {
        PARCBuffer *name = parcBuffer_WrapCString("null");
        PARCJSONValue *value = parcJSONValue_CreateFromNULL();
        PARCJSONPair *pair = parcJSONPair_Create(name, value);
        parcJSON_AddPair(json, pair);
        parcJSONPair_Release(&pair);
        parcBuffer_Release(&name);
        parcJSONValue_Release(&value);
    }
    {
        PARCBuffer *name = parcBuffer_WrapCString("true");
        PARCJSONValue *value = parcJSONValue_CreateFromBoolean(true);
        PARCJSONPair *pair = parcJSONPair_Create(name, value);
        parcJSON_AddPair(json, pair);
        parcJSONPair_Release(&pair);
        parcBuffer_Release(&name);
        parcJSONValue_Release(&value);
    }
    {
        PARCBuffer *name = parcBuffer_WrapCString("false");
        PARCJSONValue *value = parcJSONValue_CreateFromBoolean(false);
        PARCJSONPair *pair = parcJSONPair_Create(name, value);
        parcJSON_AddPair(json, pair);
        parcJSONPair_Release(&pair);
        parcBuffer_Release(&name);
        parcJSONValue_Release(&value);
    }
    {
        PARCBuffer *name = parcBuffer_WrapCString("integer");
        PARCJSONValue *value = parcJSONValue_CreateFromInteger(31415);
        PARCJSONPair *pair = parcJSONPair_Create(name, value);
        parcJSON_AddPair(json, pair);
        parcJSONPair_Release(&pair);
        parcBuffer_Release(&name);
        parcJSONValue_Release(&value);
    }
    {
        PARCBuffer *name = parcBuffer_WrapCString("float");
        PARCJSONValue *value = parcJSONValue_CreateFromFloat(3.1415);
        PARCJSONPair *pair = parcJSONPair_Create(name, value);
        parcJSON_AddPair(json, pair);
        parcJSONPair_Release(&pair);
        parcBuffer_Release(&name);
        parcJSONValue_Release(&value);
    }

    parcJSON_Release(&json);
}