Files
akgl-test/src/json_helpers.c

81 lines
2.1 KiB
C
Raw Normal View History

#include <jansson.h>
#include "json_helpers.h"
#include "game.h"
json_t *get_json_object_value(json_t *obj, char *key)
{
json_t *value = json_object_get(obj, key);
THROW_ZERO(value, EXC_KEYERROR, "");
THROW_ZERO(json_is_object(value), EXC_ATTRIBUTEERROR, "");
return value;
}
bool get_json_boolean_value(json_t *obj, char *key)
{
json_t *value = json_object_get(obj, key);
THROW_ZERO(value, EXC_KEYERROR, "");
THROW_ZERO(json_is_boolean(value), EXC_ATTRIBUTEERROR, "");
bool i = json_boolean_value(value);
json_decref(value);
return i;
}
int get_json_integer_value(json_t *obj, char *key)
{
json_t *value = json_object_get(obj, key);
THROW_ZERO(value, EXC_KEYERROR, "");
THROW_ZERO(json_is_integer(value), EXC_ATTRIBUTEERROR, "");
int i = json_integer_value(value);
json_decref(value);
return i;
}
float get_json_number_value(json_t *obj, char *key)
{
json_t *value = json_object_get(obj, key);
float f;
THROW_ZERO(value, EXC_KEYERROR, "");
THROW_ZERO(json_is_number(value), EXC_ATTRIBUTEERROR, "");
f = json_number_value(value);
json_decref(value);
return f;
}
const char *get_json_string_value(json_t *obj, char *key)
{
const char *s;
json_t *value = json_object_get(obj, key);
THROW_ZERO(value, EXC_KEYERROR, key);
THROW_ZERO(json_is_string(value), EXC_ATTRIBUTEERROR, key);
s = json_string_value(value);
json_decref(value);
return s;
}
json_t *get_json_array_value(json_t *obj, char *key)
{
json_t *value = json_object_get(obj, key);
THROW_ZERO(value, EXC_KEYERROR, key);
THROW_ZERO(json_is_array(value), EXC_ATTRIBUTEERROR, key);
return value;
}
json_t *get_json_array_index_object(json_t *array, int index)
{
json_t *value = json_array_get(array, index);
THROW_ZERO(value, EXC_INDEXERROR, "");
THROW_ZERO(json_is_object(value), EXC_ATTRIBUTEERROR, "");
return value;
}
int get_json_array_index_integer(json_t *array, int index)
{
int i;
json_t *value = json_array_get(array, index);
THROW_ZERO(value, EXC_INDEXERROR, "");
THROW_ZERO(json_is_integer(value), EXC_ATTRIBUTEERROR, "");
i = json_integer_value(value);
json_decref(value);
return i;
}