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数组进行排序