Разбор Json с использованием fastJson в C++ дает ошибку
Данный формат строки приведен ниже:
"{"success":"yes","error":"","message":"","arguments":"[{\"assetId\":\"7384\",\"assetSerialNo\":\"Base Map\",\"assetDescription\":\"\",\"assetVersion\":\"\",\"assetIsMovable\":\"f\",\"assetType\":\"Layer\",\"assetModel\":\"Tile\",\"parentId\":\"7362\",\"assetIsTrackable\":\"f\",\"assetInheritsRegion\":\"f\",\"assetRegion\":\"\",\"typeId\":\"15\"}]"}"
Объект в массиве, и этот массив находится внутри объекта. Но когда я анализирую эту строку:
document.h включен
Документ obj; obj.Parse<0>(JSON);
Выдает ошибку:
document.h: 1718: 22: примечание: шаблон rapidjson::GenericDocument& rapidjson::GenericDocument::Parse(const Ch*) [с неподписанным int parseFlags = parseFlags, SourceEncoding = SourceEncoding, Encoding = rapidjson::UTF8<>, Allocator = rapidjson::MemoryPoolAllocator<>, StackAllocator = rapidjson::CrtAllocator, rapidjson::GenericDocument = rapidjson::GenericDocument >, rapidjson::GenericDocument::Ch = char] document.h:1729:22: примечание: шаблон rapidjson::GenericDocument& rapidjson::GenericDocument::Parse(const Ch*) [с неподписанным int parseFlags = parseFlags, Encoding = rapidjson::UTF8<>, Распределитель = rapidjson:: MemoryPoolAllocator <>, StackAllocator = rapidjson:: CrtAllocator, rapidjson:: GenerDocument rapidjson:: GenericDocument>, rapidjson:: GenericDocument:: Ch = char]
Как я JSON декодировать этот формат и получить assetId . Основной объект не имеет \"\" вокруг строки, как этот формат возвращается из API?
1 ответ
Согласно https://jsonlint.com/ действительный JSON будет выглядеть примерно так:
"{"успех":"да","ошибка":"","сообщение":"","аргументы":" [{"assetId":"7384","assetSerialNo":"Базовая карта","assetDescription ":"","assetVersion":"","assetIsMovable":"f","assetType":"Слой","assetModel":"Плитка","parentId":"7362","assetIsTrackable":"f ","assetInheritsRegion":"f","assetRegion":"","typeId":"15"}]}"