如何使用std :: string中的rapidjson进行解析?

时间:2013-03-25 16:01:08

标签: c++ rapidjson

如何使用std :: string中的rapidjson进行解析? 我想尝试(json字符串有效,我查看了jsonlint.com

Document document;
char * writable = new char[contentString.size() + 1];
std::copy(contentString.begin(), contentString.end(), writable);
writable[contentString.size()] = '\0'; // don't forget the terminating 0
std::cout<<writable<<"\n";
if (document.Parse<0>(writable).HasParseError())
    return 1;

contentString 是我的 json std :: string ,但是当我开始时,我总是会收到错误(返回1 )。 我也试过没有size()+ 1和'\ 0',但没有(绝望的测量编程)。 任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:4)

你试过吗

if (document.Parse<0>(contentString.c_str()).HasParseError())
    return 1;

因为,从文档中,我看不出为什么你想要任何“可写”......

答案 1 :(得分:4)

如果contentString是std :: string,请尝试

document.Parse<0>(contentString.c_str()).HasParseError()

如果contentString是char *,请尝试

document.Parse<0>(contentString).HasParseError()

并且您最好发布原始代码段

答案 2 :(得分:4)

尝试使用parse std :: string

std::string str = "{ \"hello\" : \"world\" }";
copiedDocument.Parse<0>(str.c_str());

答案 3 :(得分:2)

对我来说,发送json的字符串有错误, 您正确使用它,我建议您尝试发送它:

const char json[] = "{ \"hello\" : \"world\" }";

看看它是否有效,如果是这样,显然它是一个缓冲问题..你可以从那里继续我肯定