【避坑指南】Qt 中使用到QJsonValue / QJsonObject 转QString时要注意了

源代码

先上示例代码, 以下代码将QJsonObject对象转换成QString并拼接成 key1=value1&key2=valu2的形式

// 假设存在QJsonObject实例qjsonobj
QString strVal = "";
foreach (QString key, qjsonobj.keys()) {
    qDebug()<<key<<qjsonobj[key];
    QJsonValue val = qjsonobj.take(key);
    QString valTmp = "";
    if(val.isDouble()){
        valTmp = QString("%1").arg(val.toDouble());
    }else{
        valTmp = val.toString();
    }
    strVal += QString("%1=%2&").arg(key).arg(valTmp);
}
strVal = strVal.remove(strVal.length() - 1, 1);

注意事项

可以注意到上述代码中转换时并没有统一使用到.toString()方法, 由于数值对象是没有该方法的。

  • 当json对象中存在intdouble型时,需要进行特殊处理, 否则无法正常拼接,导致参数丢失
  • 此处的json对象是从js端传递过来的,故只处理了Double型而没有int型
  • json格式的QJsValueQJsonObject 的方法是 qjson = jsValue.toVariant().toJsonObject();

你可能感兴趣的:(经验详谈,qt,qt,js)