diff options
Diffstat (limited to 'src/corelib/json/qjsonvalue.cpp')
-rw-r--r-- | src/corelib/json/qjsonvalue.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/corelib/json/qjsonvalue.cpp b/src/corelib/json/qjsonvalue.cpp index ae6a3678bd..76e5ae562f 100644 --- a/src/corelib/json/qjsonvalue.cpp +++ b/src/corelib/json/qjsonvalue.cpp @@ -173,7 +173,7 @@ QJsonValue::QJsonValue(int n) QJsonValue::QJsonValue(qint64 n) : d(0), t(Double) { - this->dbl = n; + this->dbl = double(n); } /*! @@ -420,6 +420,18 @@ QJsonValue QJsonValue::fromVariant(const QVariant &variant) return QJsonValue(QJsonObject::fromVariantMap(variant.toMap())); case QVariant::Hash: return QJsonValue(QJsonObject::fromVariantHash(variant.toHash())); +#ifndef QT_BOOTSTRAPPED + case QMetaType::QJsonValue: + return variant.toJsonValue(); + case QMetaType::QJsonObject: + return variant.toJsonObject(); + case QMetaType::QJsonArray: + return variant.toJsonArray(); + case QMetaType::QJsonDocument: { + QJsonDocument doc = variant.toJsonDocument(); + return doc.isArray() ? QJsonValue(doc.array()) : QJsonValue(doc.object()); + } +#endif default: break; } @@ -515,7 +527,7 @@ bool QJsonValue::toBool(bool defaultValue) const int QJsonValue::toInt(int defaultValue) const { if (t == Double && int(dbl) == dbl) - return dbl; + return int(dbl); return defaultValue; } @@ -738,23 +750,23 @@ QDebug operator<<(QDebug dbg, const QJsonValue &o) dbg << "QJsonValue(null)"; break; case QJsonValue::Bool: - dbg.nospace() << "QJsonValue(bool, " << o.toBool() << ")"; + dbg.nospace() << "QJsonValue(bool, " << o.toBool() << ')'; break; case QJsonValue::Double: - dbg.nospace() << "QJsonValue(double, " << o.toDouble() << ")"; + dbg.nospace() << "QJsonValue(double, " << o.toDouble() << ')'; break; case QJsonValue::String: - dbg.nospace() << "QJsonValue(string, " << o.toString() << ")"; + dbg.nospace() << "QJsonValue(string, " << o.toString() << ')'; break; case QJsonValue::Array: dbg.nospace() << "QJsonValue(array, "; dbg << o.toArray(); - dbg << ")"; + dbg << ')'; break; case QJsonValue::Object: dbg.nospace() << "QJsonValue(object, "; dbg << o.toObject(); - dbg << ")"; + dbg << ')'; break; } return dbg; |