假设我有一个类型的函数:
bool sortJson(QJsonArray &);
应该对 QJsonArray
进行排序(并返回真)如果所有成员都是 double
.我知道我可以建立一个辅助 QVector
, 遍历 QJsonArray
并测试 isDouble()
的每个元素, 并附加到 QVector
, 最后对 QVector
进行排序,再次遍历它,并插入回 QJsonArray
.
有没有更好的方法在 QJsonArray
之间进行转换?和 QVector<dobule>
?或者,这些类型是否有短函数?
bool jsonToVector(const QJsonArray&, QVector<double>&);
bool vectorToJson(const QVector<double>&, QJsonArray&);
最佳答案
我不相信有这样的功能,但你如何定义一个项目是双重的?
如果你有 { 0.0, 1, 2.2 },是:-
- {float, int, double} 的列表
- {double, int, double} 的列表
- 3次 double
- 3个花车
我想说所有可能都是真的,因为 JSON 只是一种文本表示。如果您只想检查它是否可以转换为 double ,那么您可以将 JsonArray 转换为 QVariantList 并检查每个项目是否可以转换为 double
QVariantList varList = jsonArray.toVariantList();
foreach(QVariant item, varList)
{
bool bOk;
item.toDouble(&bOk);
if(bOk)
{
// item can be converted to a double
}
}
无论你选择哪种方法,我都不相信有一个快速函数可以直接对json数组进行排序。
关于c++ - 对 QJsonArray 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26148392/