#define _POSIX_C_SOURCE 200809L #include #include #include "instance_info.h" #include "log.h" struct instance_info *instance_info_from_json(char *json_data) { struct instance_info *info; info = malloc(sizeof(struct instance_info)); json_t *root; json_error_t error; root = json_loads(json_data, 0, &error); if (!root) { gs_log(GS_WARNING, "instance_info_from_json", "error: on line %d: %s", error.line, error.text); return NULL; } if (!json_is_object(root)) { gs_log(GS_WARNING, "instance_info_from_json", "root is not object"); json_decref(root); return NULL; } json_t *title = json_object_get(root, "title"); if (!json_is_string(title)) { gs_log(GS_WARNING, "instance_info_from_json", "title is not string"); return NULL; } info->title = strdup(json_string_value(title)); json_decref(root); return info; }