Created
September 23, 2018 22:47
-
-
Save jniemann66/29602cbce589a7ec22a4674f894265eb to your computer and use it in GitHub Desktop.
Old printJson (using string insertion - slow)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
QString printJSON(const QJsonValue& jsonValue, int maxLength, int indentLevel) { | |
static const QString indent{QStringLiteral(" ")}; | |
static const QString cn{QStringLiteral(",\n")}; | |
QString whiteSpace(indent.repeated(indentLevel)); | |
switch(jsonValue.type()) { | |
case QJsonValue::Object: | |
{ | |
QStringList values; | |
QJsonObject o = jsonValue.toObject(); | |
for(const QString& key : o.keys()) { | |
values.append(QStringLiteral("%1 \"%2\":%3").arg(whiteSpace, key, printJSON(o.value(key), maxLength, indentLevel + 1))); | |
} | |
return QStringLiteral("{\n%1\n%2}").arg(values.join(cn), whiteSpace); | |
} | |
case QJsonValue::Array: | |
{ | |
QStringList values; | |
for(const QJsonValue& v : jsonValue.toArray()) { | |
values.append(whiteSpace + indent + printJSON(v, maxLength, indentLevel + 1)); | |
} | |
return QStringLiteral("[\n%1\n%2]").arg(values.join(cn), whiteSpace); | |
} | |
case QJsonValue::String: | |
{ | |
QString s = jsonValue.toVariant().toString(); | |
return (s.length() > maxLength) ? QStringLiteral("\"(%1 chars)\"").arg(s.length()) : QStringLiteral("\"%1\"").arg(s); | |
} | |
case QJsonValue::Double: | |
case QJsonValue::Bool: | |
return jsonValue.toVariant().toString(); | |
case QJsonValue::Null: | |
case QJsonValue::Undefined: | |
return QStringLiteral("null"); | |
} | |
return QString(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment