2011-06-24 48 views
1

我有一个JSON编码字典的QString。有没有简单的方法将它们转换为QHashes列表?我看过这个帖子Best JSON parser for Qt?,但一直没有得到一个有效的QHash(说它是空的)。将json哈希数组转换为Qt QH列表

"[{ '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. 
+0

请发布您尝试的代码,以便人们可以查看它并希望修复它。 – Mat

回答

1

如果您在使用复制代码QScriptEngine(或QJson)做分析,这使属性为QMAP而非QHash。

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