Как разобрать с rapidjson из std :: string?

Как разобрать с rapidjson из std :: string?
Я пытаюсь, как (строка 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’, но ничего (отчаянное программирование мер).
Может кто-нибудь мне помочь ?

3

Решение

Ты пытался

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

?

Потому что из документации я не могу понять, почему вы хотите что-нибудь «доступное для записи» …

4

Другие решения

если contentString является std :: string, просто попробуйте

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

если contentString — char *, просто попробуйте

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

и вам лучше опубликовать свой оригинальный фрагмент кода

4

Попробуйте это для разбора std :: string

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

Сдается мне, есть ошибка со строкой, которую вы посылаете JSON,
Вы используете его правильно, я предлагаю вам попробовать отправить его:

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

И посмотрите, если это работает, если так очевидно, что это проблема с буфером .. вы можете продолжить оттуда, я уверен,

2
По вопросам рекламы [email protected]