Как разобрать с 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’, но ничего (отчаянное программирование мер).
Может кто-нибудь мне помочь ?
Ты пытался
if (document.Parse<0>(contentString.c_str()).HasParseError())
return 1;
?
Потому что из документации я не могу понять, почему вы хотите что-нибудь «доступное для записи» …
если contentString является std :: string, просто попробуйте
document.Parse<0>(contentString.c_str()).HasParseError()
если contentString — char *, просто попробуйте
document.Parse<0>(contentString).HasParseError()
и вам лучше опубликовать свой оригинальный фрагмент кода
Попробуйте это для разбора std :: string
std::string str = "{ \"hello\" : \"world\" }";
copiedDocument.Parse<0>(str.c_str());
Сдается мне, есть ошибка со строкой, которую вы посылаете JSON,
Вы используете его правильно, я предлагаю вам попробовать отправить его:
const char json[] = "{ \"hello\" : \"world\" }";
И посмотрите, если это работает, если так очевидно, что это проблема с буфером .. вы можете продолжить оттуда, я уверен,