Я пытаюсь использовать библиотеку Jansson для анализа строки JSON.Я не могу разобрать это правильно.Вот мой код на C ++
std::string JSONString = "{\"Hostages\": [{\"Rescue\": \"help me!\",\"confidence\": 0.01}]}";
json_t *JsonTable, *Rescue, *Hostages;
json_error_t JsonError;
if (JSONString.c_str()) {
JsonTable = json_loads(JSONString.c_str(), 0, &JsonError);
if (!JsonTable) {
printf("JSON parsing error: on line %d: %s\n", JsonError.line,
JsonError.text);
}
if (!json_is_object(JsonTable)) {
printf("JSON Pased root is not an array : Invalid response received\n");
json_decref(JsonTable);
}
Hostages = json_object_get(JsonTable, "Hostages");
if (!json_is_array(Hostages)) {
printf("error: Hostages is not array\n");
json_decref(JsonTable);
return 1;
} else {
Hostages = json_array_get(Hostages, json_array_size(Hostages));
Rescue = json_object_get(Hostages,"Rescue");
if (!json_is_string(Rescue)) {
printf("error: Rescue is not string\n");
json_decref(JsonTable);
return 1;
} else {
}
}
}
Я не понимаю, является ли Rescue
строкой, объектом или массивом.Я попробовал все три варианта как if (!json_is_string(Rescue))
, if (!json_is_array(Rescue))
& if (!json_is_object(Rescue))
, но всегда выдается "ошибка: Rescue is not string" .
Любая помощь, пожалуйста?