【发布时间】:2014-10-29 10:12:44
【问题描述】:
给定的字符串格式如下:
"{"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(json);
它给出一个错误:
document.h:1718:22: 注意:模板 rapidjson::GenericDocument& rapidjson::GenericDocument::Parse(const Ch*) [with unsigned int parseFlags = parseFlags, SourceEncoding = SourceEncoding, Encoding = rapidjson::UTF8 , 分配器 = rapidjson::MemoryPoolAllocator, StackAllocator = rapidjson::CrtAllocator, rapidjson::GenericDocument = rapidjson::GenericDocument >, rapidjson::GenericDocument::Ch = char] document.h:1729:22: 注意:模板 rapidjson::GenericDocument& rapidjson::GenericDocument::Parse(const Ch*) [with unsigned int parseFlags = parseFlags, Encoding = rapidjson::UTF8, Allocator = rapidjson::MemoryPoolAllocator , StackAllocator = rapidjson::CrtAllocator, rapidjson::GenericDocument = rapidjson::GenericDocument >, rapidjson::GenericDocument::Ch = char]
我如何 json 解码该格式并检索assetId。主对象在字符串周围没有 \"\" 因为这种格式是从 api 返回的?
【问题讨论】:
-
您缺少 loads 的错误消息。具体来说,实际说明问题所在的部分。你只发布了两个“笔记”。
-
您的 json 字符串有问题。对于初学者来说,它甚至没有被正确地转义。
-
只有标头的库不好玩!!
-
您是否尝试编译示例并查看它们是否有效?
-
是的,我编译了它的工作示例之一。由于我是 c++ 新手,我如何从上述字符串中提取有用数据,即 c++ 中的assetId。我的意思是哪个 buildIn c++ 函数有助于提取数据。