diff options
| author | Johannes Grunenberg <nerixdev@outlook.de> | 2024-11-13 18:08:55 +0100 |
|---|---|---|
| committer | Johannes Grunenberg <nerixdev@outlook.de> | 2024-11-22 21:25:23 +0100 |
| commit | 65fda988e92e314d036e760d689b58ce583cef19 (patch) | |
| tree | 270a424d8581072582ea7f2f8be88a392a804ce2 /src/corelib/serialization/qjsondocument.cpp | |
| parent | 5c3f76840961693276e3e12e3085cd30a300283e (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.cpp | 5 |
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; } |
