Разбор Json с использованием RapidJson в С++ с ошибкой

Формат данной строки приведен ниже:

"{"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.Parse‹0>(json);

Выдает ошибку:

document.h:1718:22: примечание: шаблон rapidjson::GenericDocument& rapidjson::GenericDocument::Parse(const Ch*) [с unsigned 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*) [с unsigned int parseFlags = parseFlags, Encoding = rapidjson::UTF8‹>, Allocator = rapidjson::MemoryPoolAllocator‹>, StackAllocator = rapidjson::CrtAllocator, rapidjson::GenericDocument = Rapidjson::GenericDocument >, rapidjson::GenericDocument::Ch = char]

Как я json декодирую этот формат и получаю актив Id. Основной объект не имеет \"\" вокруг строки, поскольку этот формат возвращается из API?


person Ali Raza    schedule 29.10.2014    source источник
comment
Вы пропускаете грузы сообщения об ошибке. В частности, та часть, которая на самом деле говорит, что не так. Вы разместили только две заметки.   -  person Lightness Races in Orbit    schedule 29.10.2014
comment
Что-то не так с вашей строкой json. Он даже не сбежал должным образом для начала.   -  person Paul Rooney    schedule 29.10.2014
comment
Весело не только в заголовках!   -  person Paul Rooney    schedule 29.10.2014
comment
Пробовали ли вы скомпилировать примеры и посмотреть, работают ли они?   -  person Milo Yip    schedule 30.10.2014
comment
да, я компилирую один из примеров его работы. Поскольку я новичок в С++, как я извлекаю полезные данные из приведенной выше строки, т.е. актива в С++. Я имею в виду, какая функция buildIn С++ помогает извлекать данные.   -  person Ali Raza    schedule 30.10.2014


Ответы (1)


Согласно https://jsonlint.com/ допустимый JSON будет выглядеть примерно так:

{успех: да, ошибка:, сообщение:, аргументы: [{assetId:7384,assetSerialNo:Base Map,assetDescription:,assetVersion:,assetIsMovable:f,assetType:Layer,assetModel:Tile,parentId:7362,assetIsTrackable:f, активInheritsRegion:f,assetRegion:,typeId:15}]}

person MTI    schedule 12.02.2021