这是我的Json数组。
{
"colorsArray":[{
"colorName":"red",
"hexValue":"#f00"
},
{
"colorName":"green",
"hexValue":"#0f0"
},
{
"colorName":"blue",
"hexValue":"#00f"
}
]
}我想要获得‘绿色’的值。我在rapidjson库中的c++代码是
Document document;
document.Parse<0>(jsoncontent.c_str()).HasParseError();
document.Parse(jsoncontent.c_str());
const Value& user = document["colorsArray"];
string name = user["colorName"].GetString();当我试图访问colorName时,我得到了下面的运行时错误。
rapidjson::GenericValue<Encoding, Allocator>::MemberIterator
rapidjson::GenericValue<Encoding, Allocator>::FindMember(const
rapidjson::GenericValue<Encoding, SourceAllocator>&) [with SourceAllocator
= rapidjson::MemoryPoolAllocator<>; Encoding = rapidjson::UTF8<>;
Allocator = rapidjson::MemoryPoolAllocator<>;
rapidjson::GenericValue<Encoding, Allocator>::MemberIterator =
rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>,
rapidjson::MemoryPoolAllocator<> >]: Assertion `IsObject()' failed.
Aborted (core dumped)如何使用Rapidjson Library读取特定值?
发布于 2017-03-08 17:49:14
简而言之,在我看来,该文档是不完整的。如果将读数值代码放在循环体或线程中并运行程序,则在终止时会发生错误。因此,当您想要获取一个值时,首先判断文档是否为IsObject()。
也许这可以是工作:
Document document;
document.Parse<0>(jsoncontent.c_str()).HasParseError();
document.Parse(jsoncontent.c_str());
if(document.IsObject()) // add this line
{
const Value& user = document["colorsArray"];
string name = user["colorName"].GetString();
}https://stackoverflow.com/questions/37460502
复制相似问题