Оператор []
действителен только для JsonValue
объектов типа Object
или ноль.Все остальные (Int
, Bool
, Array
и т. Д.) Будут утверждать.
Если ваш UserRoot0
объект имеет тип Array
или какой-либо другой не-1011 * тип, у вас естьпроделать еще некоторую работу (например, итерацию в подузлах), чтобы найти целевой узел, который может содержать или не содержать ошибку.Напечатайте UserRoot0.toStyledString()
, чтобы увидеть, как выглядит ваш JSON, и убедитесь, что он выглядит как объект JSON (подробный обзор того, что это такое, см. json.org ).
A "Комментарий ToDo в верхней части исходного файла json_value.cpp (где определено JSON_ASSERT
) подразумевает, что разработчики могут планировать более надежную обработку ошибок вместо этих утверждений в будущих версиях, но тем временем вы можете проверить сами,например:
if(UserRoot0.isObject() && UserRoot0.isMember("error"))
// Process error node
else
// This node isn't an Object node or doesn't contain the "error" key
Проверка isMember()
также будет подтверждена для не Object
узлов, поэтому обязательно проверьте isObject()
перед проверкой isMember()
, если UserRoot0
не гарантируетсябыть Object
.