const char *json_o_str(const json_value *obj, const json_char *name) { json_value *ret = json_o_get(obj, name); if (ret && ret->type == json_string) { return ret->u.string.ptr; } else { return NULL; } }
char *json_o_strdup(const json_value *obj, const json_char *name) { json_value *ret = json_o_get(obj, name); if (ret && ret->type == json_string && ret->u.string.ptr) { return g_memdup(ret->u.string.ptr, ret->u.string.length + 1); } else { return NULL; } }
/** * Gets a #json_value by name from a parent #json_value, and checks * for its existence and type. * * @param json The #json_value. * @param name The name. * @param type The #json_type. * @param val The return location for the value. * * @return TRUE if the value was found, or FALSE on error. **/ gboolean steam_json_val_chk(const json_value *json, const gchar *name, json_type type, json_value **val) { g_return_val_if_fail(json != NULL, FALSE); g_return_val_if_fail(name != NULL, FALSE); g_return_val_if_fail(val != NULL, FALSE); *val = json_o_get(json, name); if ((*val == NULL) || ((*val)->type != type)) { *val = NULL; return FALSE; } return TRUE; }