Files
akgl-test/src/json_helpers.c
2024-12-22 00:07:16 -05:00

83 lines
2.2 KiB
C

#include <jansson.h>
#include "json_helpers.h"
#include "game.h"
#include "string.h"
#include "heap.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;
}
string *get_json_string_value(json_t *obj, char *key)
{
string *s = heap_next_string();
json_t *value = json_object_get(obj, key);
THROW_ZERO(value, EXC_KEYERROR, key);
THROW_ZERO(json_is_string(value), EXC_ATTRIBUTEERROR, key);
strncpy(s->data, (char *)json_string_value(value), MAX_STRING_LENGTH);
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;
}