将json数组的哈希值转换为Qh列表的Qhashes

时间:2011-06-24 04:39:54

标签: qt json qstring qjson

我有一个JSON编码字典的QString。有没有一种简单的方法将它们转换为QHashes列表?我查看了这篇文章Best JSON parser for Qt?,但未能获得有效的QHash(说它是空的)。

"[{ 'var' : 'xres', 'name' : 'Image Width', 'type' : 'int', 'min' : 1, 'max' : 4096},{ 'var' : 'yres', 'name' : 'Image Height', 'type' : 'int', 'min' : 1, 'max' : 4096}]"

我喜欢QList<QHash<QString,QVariant>>之类的东西。

解决:

QScriptValue sc;
QScriptEngine engine;
sc = engine.evaluate(atts); // In new versions it may need to look like engine.evaluate("(" + QString(result) + ")");

QVariantList attsList;
qScriptValueToSequence(sc, attsList);

foreach (QVariant item, attsList) {
    //std::cout << item.typeName() << std::endl;
    QMap<QString,QVariant> attribute = item.toMap();
    attribute["name"].toString() // etc.

1 个答案:

答案 0 :(得分:1)

如果您正在使用QScriptEngine(或QJson)进行解析,则会将属性放入QMap而不是QHash。

在两者之间进行转换很容易,但不会自动完成。