如何在不使用json的情况下解析QtC++中的数据
How to parse data in Qt C++ without use of json?
我在Ubuntu 14.04上使用基于Qt 5.5.1(GCC 4.9.1,32位)的Qt Creator 3.5.1(开源),并为嵌入式linux设备开发应用程序。在我的应用程序中,我每30秒就会得到一些货币。因此,在我的主窗口中,我设置了QThread和QTimer,并使用QNetworkAccessManager和QNetworkRequest获得以下数据。现在我的主窗口上有一个6标签,例如;
lblBuy_USD、lblBue_EUR、lblBuy_STG、lblSale_USD、lbl Sale_EUR和lblSale_STG
我的问题是我不能在我的Qt中使用json文件。所以,我的问题是,如何从我从QNetworkRequest获得的数据中提取美元销售数据(39500)?
{
"date": "20171108",
"currencies": {
"dollar": {
"buy": "3,8450",
"sale": "3,9500",
"e_buy": "3,8450"
},
"sterling": {
" buy ": "5,0500",
" sale ": "5,1700",
" e_buy ": "5,0500"
},
"euro": {
" buy ": "4,4600",
" sale ": "4,5650",
" e_buy ": "4,4600"
}
}
}
更新:我使用正则表达式,但无法获取任何数据。我的标签没有价值。请帮忙吗?
QString strReply = (QString)currentReply->readAll();
QRegExp rxBUY_USD("dollar.*?buy.*?(\d+\,\d+)");
if( rxBUY_USD.indexIn( strReply ) != -1 )
{
ui->lblBUY_USD->setText( rxBUY_USD.cap( 1 ));
}
为了获得美元销售额,您可以尝试执行以下操作:
QRegularExpression re("dollar.*?sale.*?(\d+\,\d+)"); // Watch the decimal separator
QRegularExpressionMatch match = re.match(s); // s - is the JSON string you got
if (match.hasMatch())
{
QString matched = match.captured(1);
// Convert string to number, if needed.
}
else
{
// Failed to find dollar sales
}
更新
同样可以通过使用QRegExp
类(旧):来实现
QRegExp re2("dollar.*sale.*(\d+\,\d+).*");
if (re2.indexIn(s) != -1)
{
QString matched = re2.cap(1);
}
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在未初始化映射的情况下,将值插入到映射的映射中
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何在没有信号的情况下从C++执行QML插槽
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 为什么在某些情况下不写入此文件?
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 在C++中如何在没有pow的情况下进行基础计算
- 松弛原子与无同步情况下的记忆连贯性
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何在不使用json的情况下解析QtC++中的数据
- QtC++编译是在没有显示程序的情况下完成的