summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization/qjsondocument.cpp
diff options
context:
space:
mode:
authorJohannes Grunenberg <nerixdev@outlook.de>2024-11-13 18:08:55 +0100
committerJohannes Grunenberg <nerixdev@outlook.de>2024-11-22 21:25:23 +0100
commit65fda988e92e314d036e760d689b58ce583cef19 (patch)
tree270a424d8581072582ea7f2f8be88a392a804ce2 /src/corelib/serialization/qjsondocument.cpp
parent5c3f76840961693276e3e12e3085cd30a300283e (diff)
QJson: Allow parsing any JSON value to QJsonValue
QJsonValue can now parse all its types (arrays, strings, objects, numbers, booleans, and null) at the top-level. QJsonDocument will still return an error when parsing types that aren't objects or arrays. [ChangeLog][QtCore][QJsonValue] QJsonValue now follows RFC 8259 and is thus able to parse any JSON value, not just arrays and objects. QJsonDocument remains at the level of RFC 4627 in that only arrays and objects can be parsed. Fixes: QTBUG-62502 Change-Id: I10f3895a7646953a6f6b5f132196267e700782a1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/serialization/qjsondocument.cpp')
-rw-r--r--src/corelib/serialization/qjsondocument.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/corelib/serialization/qjsondocument.cpp b/src/corelib/serialization/qjsondocument.cpp
index fe33ff8e548..d1cefc385f8 100644
--- a/src/corelib/serialization/qjsondocument.cpp
+++ b/src/corelib/serialization/qjsondocument.cpp
@@ -272,6 +272,11 @@ QJsonDocument QJsonDocument::fromJson(const QByteArray &json, QJsonParseError *e
if (val.isArray() || val.isMap()) {
result.d = std::make_unique<QJsonDocumentPrivate>();
result.d->value = val;
+ } else if (!val.isUndefined() && error) {
+ // parsed a valid string/number/bool/null,
+ // but QJsonDocument only stores objects and arrays.
+ error->error = QJsonParseError::IllegalValue;
+ error->offset = 0;
}
return result;
}