2016-10-20 1 views
1

Я пытаюсь получить ответ json от api в Ruby On Rails.QT5.7 - Почему я получаю неправильное значение json с QString, но отлично с std :: string?

Когда я называю этот URL непосредственно завитком или почтальоном я получаю идеальный ответ JSON.

Когда я использую свою программу с окнами QT5.7, скомпилированными в Static для программы в 32 бит, я получаю идеальный ответ только при использовании std :: string.

Но, если я использую QDebug для печати на QString() я получаю этот искаженный и странный результат:

"{\" Успех \ ": правда, \" файлы \ ": [\ "C: /Perl/lib/pods/perlcn.pod \", \ "C: /Perl/lib/pods/perldata.pod \", \ "C: /Perl/lib/pods/perldebguts.pod \", \ "C: /Perl/lib/pods/perldelta.pod \", \ "C: /Perl/lib/pods/perldiag.pod \", \ "C: /Perl/lib/pods/perldoc.pod \" \ "C: /Perl/lib/pods/perldos.pod \", \ "C: /Perl/lib/pods/perldsc.pod \", \ "C: /Perl/lib/pods/perldtrace.pod \ "\ "C: /Perl/lib/pods/perlebcdic.pod \", \ "C: /Perl/lib/pods/perlembed.pod \", \" C: /Perl/lib/pods/perlexperiment.pod \ "\ "C: /Perl/lib/pods/perlfaq.pod \", \ "C: /Perl/lib/pods/perlfaq1.pod \", \" C:/Perl/Библиотека/стручки/perlfaq2. стручок \ "\" C:/Perl/Библиотека/стручки/perlfaq3.pod \ "\ "C: /Perl/lib/pods/perlfaq4.pod \", \ "C: /Perl/lib/pods/perlfaq5.pod \", \" C: /Perl/lib/pods/perlfaq6.pod\",\"C:/Perl/lib/pods/perlfaq7.pod\",\"C:/Perl/lib/pods/perlfaq8.pod\",\"C : /Perl/lib/pods/perlfaq9.pod \ "\ "C: /Perl/lib/pods/perlfilter.pod \", \ "C: /Perl/lib/pods/perlfork.pod \", \" C: /Perl/lib/pods/perlform.pod \», \ "C: /Perl/lib/pods/perlfreebsd.pod \", \ "C: /Perl/lib/pods/perlfunc.pod \", \ "C: /Perl/lib/pods/perlgit.pod \", \ "C:/Perl/Библиотека/стручки/perlglossaîv

Так что, если я печатаю зЬй :: строка, у меня есть идеальный json, именно то, что я хочу:

{"success": true, "files": ["C:/Pe ге/Библиотека/стручки/perlcn.pod " "C: /Perl/lib/pods/perldata.pod", "C: /Perl/lib/pods/perldebguts.pod"," C:/Perl/Lib/стручки /perldelta.pod","C:/Perl/lib/pods/perldiag.pod","C:/Perl/lib/pods/perldoc.pod","C:/Perl/lib/pods/perldos.pod» , "C: /Perl/lib/pods/perldsc.pod", "C: /Perl/lib/pods/perldtrace.pod", "C: /Perl/lib/pods/perlebcdic.pod", "C:/Perl/Библиотека/стручки/perlembed.pod " "C: /Perl/lib/pods/perlexperiment.pod", "C: /Perl/lib/pods/perlfaq.pod"," C:/Perl/Lib/стручки /perlfaq1.pod","C:/Perl/lib/pods/perlfaq2.pod","C:/Perl/lib/pods/perlfaq3.pod","C:/Perl/lib/pods/perlfaq4.pod» , "C: /Perl/lib/pods/perlfaq5.pod", "C: /Perl/lib/pods/perlfaq6.pod", "C: /Perl/lib/pods/perlfaq7.pod", "C:/Perl/Библиотека/стручки/perlfaq8.pod " "C: /Perl/lib/pods/perlfaq9.pod", "C: /Perl/lib/pods/perlfilter.pod"," C:/Perl/Lib/стручки /perlfork.pod","C:/Perl/lib/pods/perlform.pod","C:/Perl/lib/pods/perlfreebsd.pod","C:/Perl/lib/pods/perlfunc.pod» , "C: /Perl/lib/pods/perlgit.pod", "C: /Perl/lib/pods/perlglossary.pod", "C: /Perl/lib/pods/perlgpl.pod", "C:/Perl/Библиотека/стручки/perlguts.pod " "C: /Perl/lib/pods/perlhack.pod", "C: /Perl/lib/pods/perlhacktips.pod", "C: /Perl/lib/pods/perlhacktut.pod"," C: /Perl/lib/pods/perlhaiku.pod","C:/Perl/lib/pods/perlhist.pod","C:/Perl/lib/pods/perlhpux.pod","C:/Perl/lib/ стручки/perlhurd.pod " "C: /Perl/lib/pods/perlintern.pod", "C: /Perl/lib/pods/perlinterp.pod"," C: /Perl/lib/pods/perlintro.pod " "C: /Perl/lib/pods/perliol.pod", "C: /Perl/lib/pods/perlipc.pod", "C: /Perl/lib/pods/perlirix.pod"," C: /Perl/lib/pods/perljp.pod","C:/Perl/lib/pods/perlko.pod","C:/Perl/lib/pods/perllexwarn.pod","C:/Perl/lib/ стручки/perllinux.pod " "C: /Perl/lib/pods/perllocale.pod", "C: /Perl/lib/pods/perllol.pod"," C: /Perl/lib/pods/perlmacos.pod " "C: /Perl/lib/pods/perlmacosx.pod", "C: /Perl/lib/pods/perlmod.pod", "C: /Perl/lib/pods/perlmodinstall.pod"," C: /Perl/lib/pods/perlmodlib.pod","C:/Perl/lib/pods/perlmodstyle.pod","C:/Perl/lib/pods/perlmroapi.pod","C:/Perl/lib/ стручки/perlnetware.pod " "C: /Perl/lib/pods/perlnewmod.pod", "C: /Perl/lib/pods/perlnumber.pod"," C: /Perl/lib/pods/perlobj.pod "" C:/Perl/Библиотека/стручки/perlootut.pod " "C: /Perl/lib/pods/perlop.pod", "C: /Perl/lib/pods/perlopenbsd.pod"," C:/Perl/Lib/стручки/perlopentut.кокон " "C: /Perl/lib/pods/perlos2.pod", "C: /Perl/lib/pods/perlos390.pod", "C: /Perl/lib/pods/perlos400.pod"," C : /Perl/lib/pods/perlpacktut.pod " "C: /Perl/lib/pods/perlperf.pod", "C: /Perl/lib/pods/perlplan9.pod"," C:/Perl/Библиотека /pods/perlpod.pod","C:/Perl/lib/pods/perlpodspec.pod","C:/Perl/lib/pods/perlpodstyle.pod","C:/Perl/lib/pods/perlpolicy. кокон " "C: /Perl/lib/pods/perlport.pod", "C: /Perl/lib/pods/perlpragma.pod", "C: /Perl/lib/pods/perlqnx.pod"," C : /Perl/lib/pods/perlre.pod " "C: /Perl/lib/pods/perlreapi.pod", "C: /Perl/lib/pods/perlrebackslash.pod"," C:/Perl/Библиотека /pods/perlrecharclass.pod","C:/Perl/lib/pods/perlref.pod","C:/Perl/lib/pods/perlreftut.pod","C:/Perl/lib/pods/perlreguts. кокон " "C: /Perl/lib/pods/perlrepository.pod", "C: /Perl/lib/pods/perlrequick.pod", "C: /Perl/lib/pods/perlreref.pod"," C : /Perl/lib/pods/perlretut.pod " "C: /Perl/lib/pods/perlriscos.pod", "C: /Perl/lib/pods/perlrun.pod"," C:/Perl/Библиотека /pods/perlsec.pod","C:/Perl/lib/pods/perlsolaris.pod","C:/Perl/lib/pods/perlsource.pod","C:/Perl/lib/pods/per lstyle.pod», "C: /Perl/lib/pods/perlsub.pod", "C: /Perl/lib/pods/perlsymbian.pod", "C: /Perl/lib/pods/perlsyn.pod", "C: /Perl/lib/pods/perlsynology.pod", "C: /Perl/lib/pods/perlthrtut.pod"]}

Я понятия не имею, что я могу сделать, потому что мне нужно, чтобы разобрать my json с QString для QJsonDocument и QJsonObject.

У меня попробовать много вещей, как QNetworkAccessManager

Или (уродливой вещь для понимания и отладки), как: Curl external

Благодарности

+0

Вы не можете просто преобразовать строку std в qstring? – Hayt

+1

Спасибо за ошибку, мы поговорим о QT5.7 –

+1

Да, я пытаюсь, но все тот же результат, я попытался преобразовать wih QBytesArray и все еще то же самое –

ответ

2

Вы используете qDebug() для вывода стандартного вывода? Это не то, для чего его нужно использовать.

Он отображает в отладочном формате текущее содержимое многих типов. Для QString это означает, что строка в кавычках с определенным символом - двойная кавычка включена - экранирована с \. Это не означает, что сама строка содержит экранированные данные. Он представлен вам только QDebug.

+0

Проблема заключается не только в qDebug(), потому что, когда я пытаюсь преобразовать в строку Json с QJsonDocument QJsonDocument jsonResponse = QJsonDocument :: fromJson (jsonString.toUtf8()); это будет пустое значение. Он не может читать по нему –

+0

Не могли бы вы разместить фактическую код в вопросе тогда? – krzaq

+0

Да, конечно: http://pastebin.com/hWxCaaBX –

Смежные вопросы