summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2018-01-24 11:41:37 -0800
committerThiago Macieira <thiago.macieira@intel.com>2018-03-02 04:06:24 +0000
commita2ffb35ac2354735a95b21557a762aa16d7140a3 (patch)
treeb70527988af456aecc6d64cec0ecbcdb7ecb61cf /src
parent1c2499cbf141d7b07feef0b6a7ecda2b69fcc219 (diff)
QJsonValue: use the fully-encoded form of a URL in fromVariant()
For compatibility with other parsers that may expect it to be so. Change-Id: I56b444f9d6274221a3b7fffd150cd66390f98fd5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/serialization/qjsonvalue.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/corelib/serialization/qjsonvalue.cpp b/src/corelib/serialization/qjsonvalue.cpp
index 33707b6ec3..989d6d51db 100644
--- a/src/corelib/serialization/qjsonvalue.cpp
+++ b/src/corelib/serialization/qjsonvalue.cpp
@@ -40,6 +40,7 @@
#include <qjsonobject.h>
#include <qjsonvalue.h>
#include <qjsonarray.h>
+#include <qurl.h>
#include <qvariant.h>
#include <qstringlist.h>
#include <qdebug.h>
@@ -407,6 +408,14 @@ QJsonValue &QJsonValue::operator =(const QJsonValue &other)
\li QMetaType::QVariantHash
\endlist
\li QJsonValue::Object
+
+ \row
+ \li
+ \list
+ \li QMetaType::QUrl
+ \endlist
+ \li QJsonValue::String. The conversion will use QUrl::toString() with flag
+ QUrl::FullyEncoded, so as to ensure maximum compatibility in parsing the URL
\endtable
For all other QVariant types a conversion to a QString will be attempted. If the returned string
@@ -439,6 +448,8 @@ QJsonValue QJsonValue::fromVariant(const QVariant &variant)
case QVariant::Hash:
return QJsonValue(QJsonObject::fromVariantHash(variant.toHash()));
#ifndef QT_BOOTSTRAPPED
+ case QVariant::Url:
+ return QJsonValue(variant.toUrl().toString(QUrl::FullyEncoded));
case QMetaType::QJsonValue:
return variant.toJsonValue();
case QMetaType::QJsonObject: