【问题标题】:Json parsing using rapidJson in c++ giving Error在c ++中使用rapidJson解析Json给出错误
【发布时间】: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++ 函数有助于提取数据。

标签: c++ json rapidjson


【解决方案1】:

根据https://jsonlint.com/,一个有效的 JSON 应该更像这样:

"{"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"}]}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多