From 6a04d4dc9c0e60f9b2108496f6601de06028cb09 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Fri, 7 Jul 2023 16:47:08 +0200 Subject: [PATCH] qtpaths: generate proper JSON The "manual" generation left a trailing comma in the object definition. This is illegal, as per RFC 8259: object = begin-object [ member *( value-separator member ) ] end-object Hence, the resulting JSON does not get accepted by any parser. Let's just not do that and use QJsonDocument. Change-Id: I882486e55f66c52d142638f37584088091bbc123 Fixes: QTBUG-115124 Reviewed-by: Alexandru Croitor Reviewed-by: Alexey Edelev (cherry picked from commit 04f2acf93ad28848808822c9a8e0479509ec5555) Reviewed-by: Qt Cherry-pick Bot --- qmake/propertyprinter.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/qmake/propertyprinter.cpp b/qmake/propertyprinter.cpp index 4ba56327e66..10c94942e15 100644 --- a/qmake/propertyprinter.cpp +++ b/qmake/propertyprinter.cpp @@ -5,6 +5,10 @@ #include +#include +#include +#include + QT_BEGIN_NAMESPACE void qmakePropertyPrinter(const QList> &values) @@ -22,11 +26,12 @@ void qmakePropertyPrinter(const QList> &values) void jsonPropertyPrinter(const QList> &values) { - std::cout << "{\n"; - for (const auto &val : values) { - std::cout << "\"" << qPrintable(val.first) << "\":\"" << qPrintable(val.second) << "\",\n"; - } - std::cout << "}\n"; + QJsonObject object; + for (const auto &val : values) + object.insert(val.first, val.second); + + QJsonDocument document(object); + std::cout << document.toJson().constData(); } QT_END_NAMESPACE