int keys_count(json_object * jo){

    int count = 0;
    
    json_object_object_foreach(jo, key, val)
        count++;

    return count;
}
Exemple #2
0
static xr_value* _xr_value_unserialize_json(struct json_object* obj)
{
    switch (json_object_get_type(obj))
    {
    case json_type_null:
        g_return_val_if_reached(NULL);

    case json_type_boolean:
        return xr_value_bool_new(json_object_get_boolean(obj));

    case json_type_double:
        return xr_value_double_new(json_object_get_double(obj));

    case json_type_int:
        return xr_value_int_new(json_object_get_int(obj));

    case json_type_object:
    {
        xr_value* str = xr_value_struct_new();
        json_object_object_foreach(obj, key, val)
        xr_value_struct_set_member(str, key, _xr_value_unserialize_json(val));
        return str;
    }

    case json_type_array:
    {
        int i;
        xr_value* arr = xr_value_array_new();
        const int arr_len = json_object_array_length(obj);
        for (i = 0; i < arr_len; i++)
            xr_value_array_append(arr, _xr_value_unserialize_json(json_object_array_get_idx(obj, i)));
        return arr;
    }

    case json_type_string:
        return xr_value_string_new(json_object_get_string(obj));
    }

    g_return_val_if_reached(NULL);
}