• 11818阅读
  • 8回复

qt解析json [复制链接]

上一主题 下一主题
离线hfutzhu
 

只看楼主 倒序阅读 楼主  发表于: 2010-11-23
— 本帖被 XChinux 执行加亮操作(2010-11-27) —
在网上找到类似的方法:
QString str = "{\"value1\":\"2.3\",\"value2\":1.2}";

QScriptValue sc;
QScriptEngine engine;
sc = engine.evaluate("value = " + str);

QScriptValueIterator it(sc);
while (it.hasNext()) {
       it.next();
       //打印输出对应的值
       qDebug() << it.name() << ": " << it.scriptName() << ":" << it.value().toString();
  }

我要找value2的值要一个一个轮询,还有别的解析方法么?
离线XChinux

只看该作者 1楼 发表于: 2010-11-26
使用Qt Script解析,不错。
C++的解析库有好几个,你可以试试看。
我以前用过tinyjson,基于boost的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线dbzhang800

只看该作者 2楼 发表于: 2010-11-26
引用楼主hfutzhu于2010-11-23 21:41发表的 qt解析json :
在网上找到类似的方法:
QString str = "{\"value1\":\"2.3\",\"value2\":1.2}";
QScriptValue sc;
QScriptEngine engine;


sc = engine.evaluate(QString("(%1)").arg(str));

QString value2 = sc.property("value2").toString();

注意:此处假定你用的是Qt4.6(包括)及以后的版本
离线hfutzhu

只看该作者 3楼 发表于: 2010-11-26
如果像这样的QString str = "[{\"value1\":\"2.3\",\"value2\":1.2},{{\"value1\":\"2.3\",\"value2\":1.2}]"怎么解析啊?
离线hfutzhu

只看该作者 4楼 发表于: 2010-11-26
QString str = "[{\"value1\":\"2.3\",\"value2\":1.2},{\"value1\":\"2.3\",\"value2\":1.2}]"
离线dbzhang800

只看该作者 5楼 发表于: 2010-11-26
引用第4楼hfutzhu于2010-11-26 18:52发表的  :
QString str = "[{\"value1\":\"2.3\",\"value2\":1.2},{\"value1\":\"2.3\",\"value2\":1.2}]"

对 javascript 和 json 不了解,只是想知道

你先
evaluate
然后,取属性
sc.property(0).property("value2")
到底遇到什么问题了
离线hfutzhu

只看该作者 6楼 发表于: 2010-11-27
已经好了现在。。。
sc=engine.evaluate(json)
QScriptValueIterator it(sc)
while(it.hasnext()){
    it.next();
    QScriptValue qv = it.value();
    int  xx = qv.property("xx").toInt32();
   .......
}
离线wyz365889

只看该作者 7楼 发表于: 2011-11-23
引用第6楼hfutzhu于2010-11-27 20:42发表的  :
已经好了现在。。。
sc=engine.evaluate(json)
QScriptValueIterator it(sc)
while(it.hasnext()){
    it.next();
.......



问下兄弟,我的字符串如下:
  QString http_response ="{\"type\":\"HardwareConfig\",\"cont\":\"AddFixing\",\"address\":\"0-0-4-1\",\"fixingtype\":\"PDM_LH_PDM16_08\",\"childrens\":[{\"address\":\"0-0-4-1-0\",\"type\":\"WSD50\",\"id\":\"WSD00011\",\"parameter\":0}]}";
    QScriptValue sc;
    QScriptEngine engine;
    sc = engine.evaluate("value = " + http_response);
我要得到childrens里面的数组怎么得到?
离线wyz365889

只看该作者 8楼 发表于: 2011-11-23
引用第1楼XChinux于2010-11-26 12:06发表的  :
使用Qt Script解析,不错。
C++的解析库有好几个,你可以试试看。
我以前用过tinyjson,基于boost的。

问下版主,我的字符串如下:
  QString http_response ="{\"type\":\"HardwareConfig\",\"cont\":\"AddFixing\",\"address\":\"0-0-4-1\",\"fixingtype\":\"PDM_LH_PDM16_08\",\"childrens\":[{\"address\":\"0-0-4-1-0\",\"type\":\"WSD50\",\"id\":\"WSD00011\",\"parameter\":0}]}";
    QScriptValue sc;
    QScriptEngine engine;
    sc = engine.evaluate("value = " + http_response);
我要得到childrens里面的数组怎么得到?
快速回复
限100 字节
 
上一个 下一个