JSON in Qt using QVariantMap
In Qt 5, it has the support for JSON data.
"Qt provides support for dealing with JSON data. JSON is a format to encode object data derived from Javascript, but now widely used as a data exchange format on the internet.The JSON support in Qt provides an easy to use C++ API to parse, modify and save JSON data. It also contains support for saving this data in a binary format that is directly mmap'able and very fast to access.More details about the JSON data format can be found at and in RFC-4627."
http://qt-project.org/doc/qt-5/json.html
And I think it's not difficult to port them to Qt 4 if you need.
At least you can find the code at https://github.com/qtproject/qtbase/tree/5.3/src/corelib/json
Someone ported QJson* from 5 to 4:(Added 2013-07-02)https://github.com/5in4/qjson-backport
Note: 2012-11-30
Someone else also pointed that it's possible to use QtScript to parse JSON data. If you can read Chinese(if can't, please Google Translate it): http://www.cuteqt.com/blog/?p=2261 (This site is down for now, forgot to backup it via Google Reader, and GR is also dead... 2013-07-02)
You are using the parser from https://github.com/ereilin/qt-json, right? As far as I am aware, that parser needs your JSON data to always be an object at the top-level, so your data needs to look something like
{"somename": [ {"ID":"9","titel":"wouter","plaatsID":"2616","prio":"3"}, {"ID":"8","titel":"pasta","plaatsID":"3780","prio":"3"}, {"ID":"6","titel":"Muts prikken","plaatsID":"3780","prio":"2"}, {"ID":"5","titel":"doorplannen","plaatsID":"3840","prio":"2"}, {"ID":"4","titel":"Gasfles","plaatsID":"3780","prio":"2"} ] }
Check out the answers to Best JSON parser for Qt? for some alternative parsers, I'd recommend taking a look at qjson (http://qjson.sourceforge.net/).
void parse_links(const QScriptValue & value, QList<Link> & cbk_links){ QList<QVariantMap> list; qScriptValueToSequence(value,list); foreach(auto item, list) { Link link; link.yawDeg = item.value("yawDeg").toFloat(); link.panoId = item.value("panoId").toString(); link.road_argb = item.value("road_argb").toString(); link.description = item.value("description").toString(); link.scene = item.value("scene").toInt(); cbk_links.append(link); }}
used for passing:
"Links": [ { "yawDeg":"18.49", "panoId":"Voal3KQo5FNL67hq7tA8nA", "road_argb":"0x80ffffff", "description":"Knuth-Wintherfeldts Allé", "scene":"0" }, { "yawDeg":"198.49", "panoId":"6RCsAsNoawmh98eOOs7Wzw", "road_argb":"0x80ffffff", "description":"Knuth-Wintherfeldts Allé", "scene":"0" } ]