Разбор 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"}]}"

Другие вопросы по тегам