Ответ 1
Оператор []
действителен только для объектов JsonValue
, которые имеют тип Object
или null. Все остальные (Int
, Bool
, Array
и т.д.) Будут утверждать.
Если ваш объект UserRoot0
- это Array
или какой-либо другой тип не Object
, у вас есть еще одна работа (например, итерация на узлы), чтобы найти вашу цель node, которая может или может не содержит ошибки. Распечатайте UserRoot0.toStyledString()
, чтобы увидеть, как выглядит ваш JSON, и убедитесь, что он похож на объект JSON (см. json.org для приятного обзора что это такое).
Комментарий "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
.