4

如何使用来自 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,但是当我开始时我总是得到错误(return 1)。我也试过没有 size()+1 和 '\0' 但没有(绝望的测量编程)。谁能帮我 ?

4

4 回答 4

6

试试这个解析 std::string

std::string str = "{ \"hello\" : \"world\" }";
copiedDocument.Parse<0>(str.c_str());
于 2014-04-11T10:23:03.967 回答
5

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

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

如果 contentString 是 char *,试试

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

你最好发布你的原始代码片段

于 2013-09-24T07:48:34.823 回答
4

你有没有尝试过

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

?

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

于 2013-03-25T16:10:49.880 回答
2

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

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

看看它是否有效,如果很明显这是一个缓冲区问题..你可以从那里继续我相信

于 2013-03-25T16:16:34.893 回答