Wednesday, 15 July 2015

c++ - Qt parsing json using network response binary -



c++ - Qt parsing json using network response binary -

alright, found don't understand. making request web service using qtnetworkmanager. reason can't seem go network response jsondoc directly, have cast string , uft8?

void webapiengine::handlenetworkdata(qnetworkreply *networkreply) { //no network error if (!networkreply->error()){ //cast string qstring strreply = (qstring)networkreply->readall(); //this works, jsondoc have json response webpage qjsondocument jsondoc = qjsondocument::fromjson(strreply.toutf8()); //this doesn't work, networkreply->readall() said homecoming qbytearray. qjsondocument jsondoc2 = qjsondocument::frombinarydata(networkreply->readall()); qjsonobject jsonobj = jsondoc.object(); info = jsonobj; } //network error else{ data["error"] = "webapiengine::handlenetworkdata()"; }

now can not understand why jsondoc working , jsondoc2 not. can explain?

once qnetworkreply->readall(), qnetworkreply object empty. if phone call qnetworkreply->readall() method again, not anything.

moreover don't understand why converting qbytearray returned qnetworkreply->readall() qstring , converting qbytearray(by calling qstring::toutf8()) give qjsondocument::fromjson function.

you can seek doing this:

qbytearray temp = newreply->readall(); qjsondocument jsondoc = qjsondocument::fromjson(temp); // should work

also create sure know content of json document is, i.e. if map (qjsonobject), array(qjsonarray), array of maps or map array value.

c++ json qt binary

No comments:

Post a Comment