Skip to content

Instantly share code, notes, and snippets.

@jniemann66
Created September 23, 2018 22:47
Show Gist options
  • Save jniemann66/29602cbce589a7ec22a4674f894265eb to your computer and use it in GitHub Desktop.
Save jniemann66/29602cbce589a7ec22a4674f894265eb to your computer and use it in GitHub Desktop.
Old printJson (using string insertion - slow)
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