排序QJsonArray

时间:2014-10-01 18:46:07

标签: c++ json qt

假设我有一个类型的函数:

bool sortJson(QJsonArray &);

如果所有成员都是QJsonArray,则应对double进行排序(并返回true)。我知道我可以构建辅助QVector,遍历QJsonArray并测试isDouble()的每个元素,然后追加到QVector,最后对QVector进行排序,再次遍历它,然后插回QJsonArray

有没有更好的方式在QJsonArrayQVector<dobule>之间进行转换?或者,这些类型的函数是否很短?

bool jsonToVector(const QJsonArray&, QVector<double>&);
bool vectorToJson(const QVector<double>&, QJsonArray&);

1 个答案:

答案 0 :(得分:1)

我不相信有这样的功能,但是你将什么定义为双重项?

如果你有{0.0,1,2.2},那就是: -

  • {float,int,double}
  • 的列表
  • {double,int,double}的列表
  • 3次双打
  • 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数组进行排序的快速功能。