Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对QJsonArray排序_C++_Json_Qt - Fatal编程技术网

C++ 对QJsonArray排序

C++ 对QJsonArray排序,c++,json,qt,C++,Json,Qt,假设我有一个类型为的函数: bool sortJson(QJsonArray &); 如果所有成员都是double,则应该对QJsonArray进行排序(并返回true)。我知道我可以构建一个辅助的QVector,遍历QJsonArray并测试每个元素的isDouble(),然后附加到QVector,最后对QVector排序,再次遍历,然后插入QJsonArray 有没有更好的方法在QJsonArray和QVector之间进行转换?或者,这些类型是否有短函数 bool jsonToVe

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

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

有没有更好的方法在
QJsonArray
QVector
之间进行转换?或者,这些类型是否有短函数

bool jsonToVector(const QJsonArray&, QVector<double>&);
bool vectorToJson(const QVector<double>&, QJsonArray&);
booljsontovector(constqjsonarray&,QVector&);
布尔矢量图(常数QVector&,QJsonArray&);

我不相信有这样的功能,但是你如何定义一个项目是双重的呢

如果你有{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数组进行排序