Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用rapidjason解析根中的数组_C++_Rapidjson - Fatal编程技术网

C++ 如何使用rapidjason解析根中的数组

C++ 如何使用rapidjason解析根中的数组,c++,rapidjson,C++,Rapidjson,我有以下代码 Document d; const char* json = "[{\"k1\":\"1\"}, {\"k1\":\"2\"}]"; d.Parse(json); for (SizeType i = 0; i < d.Size(); i++) { cout << d[i]["k1"].GetInt() << "\n"; } 我可以反馈上面的字符串输出以再次解析。有没有办法直接解析它 PS:有没有更好的杰森解析器C++,界面简单?你,程序员应

我有以下代码

Document d;
const char* json = "[{\"k1\":\"1\"}, {\"k1\":\"2\"}]";
d.Parse(json);
for (SizeType i = 0; i < d.Size(); i++) {
    cout << d[i]["k1"].GetInt() << "\n";
}
我可以反馈上面的字符串输出以再次解析。有没有办法直接解析它


PS:有没有更好的杰森解析器C++,界面简单?

你,程序员应该知道你正在序列化或反序列化的JSON字符串的格式。在本例中,您似乎认为字符串值是整数

现在,为了修复这个问题,可以将它们当作字符串,然后使用标准的C++实用工具将这些字符串值转换为整数,或者您可以更新JSON字符串以包含整数。p> 第一种方法(尽管转换为int的方式不是最好的):

文件d;
const char*json=“[{\'k1\':1},{\'k1\':2}]”;
d、 解析(json);
对于(SizeType i=0;id[i][“k1”].GetString()
。int将在json中表示,不带引号。从json中提取类似“1”的字符串后,可以使用stoi将其转换为int。
rapidjson/include/rapidjson/document.h:1700: int rapidjson::GenericValue<Encoding, Allocator>::GetInt() const [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>]: Assertion `data_.f.flags & kIntFlag' failed.
 rapidjson::StringBuffer sb;
 rapidjson::Writer<rapidjson::StringBuffer> writer1( sb );
 d[0].Accept( writer1 );
 std::cout << sb.GetString() << std::endl;
{"k1":"1"}
Document d;
const char* json = "[{\"k1\":1}, {\"k1\":2}]";
d.Parse(json);
for (SizeType i = 0; i < d.Size(); i++) {
    int d;
    sscanf(d[i]["k1"].GetString(), "%d", &d);
    cout << d << "\n";
}
Document d;
const char* json = "[{\"k1\":1}, {\"k1\":2}]";
d.Parse(json);
for (SizeType i = 0; i < d.Size(); i++) {
    cout << d[i]["k1"].GetInt() << "\n";
}