假设我有一个类型的函数:
bool sortJson(QJsonArray &);
如果所有成员都是QJsonArray
,则应对double
进行排序(并返回true)。我知道我可以构建辅助QVector
,遍历QJsonArray
并测试isDouble()
的每个元素,然后追加到QVector
,最后对QVector
进行排序,再次遍历它,然后插回QJsonArray
。
有没有更好的方式在QJsonArray
和QVector<dobule>
之间进行转换?或者,这些类型的函数是否很短?
bool jsonToVector(const QJsonArray&, QVector<double>&);
bool vectorToJson(const QVector<double>&, QJsonArray&);
答案 0 :(得分:1)
我不相信有这样的功能,但是你将什么定义为双重项?
如果你有{0.0,1,2.2},那就是: -
我想说一切都可能是真的,因为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数组进行排序的快速功能。