json_t* configToJson(const AlgorithmConfig& config) const {
			json_t* jsonAlgorithmConfig = json_object();
			std::set<std::string> names = config.getAllParamNames();
			for ( std::set<std::string>::iterator iter = names.begin(); iter!=names.end(); iter++ ) {
				std::string name = *iter;
				std::string val = config.getConfigParam(name);
				json_t* jsonVal = toJsonString(val);
				json_object_set_new(jsonAlgorithmConfig, name.c_str(), jsonVal);
			}
			return jsonAlgorithmConfig;
		}
Exemplo n.º 2
0
Json::Value QSanProtocol::Utils::toJsonArray(const QStringList &arg) {
    Json::Value val(Json::arrayValue);
    foreach (QString s, arg)
        val.append(toJsonString(s));
    return val;
}
Exemplo n.º 3
0
QString ConversionUtil::toJsonString(const QVariant &variant, Options options) {

    switch (variant.type()) {
        case QVariant::Bool:
            return variant.toBool() ? "true" : "false";
        case QVariant::Int:
            return QString::number(variant.toInt());
        case QVariant::UInt:
            return QString::number(variant.toUInt());
        case QVariant::Double:
            return QString::number(variant.toDouble());
        case QVariant::String:
            return variant.toString().isEmpty() ? QString() : jsString(variant.toString());
        case QVariant::List: {
            QStringList stringList;
            for (const QVariant &item : variant.toList()) {
                stringList.append(ConversionUtil::toJsonString(item));
            }
            if (stringList.isEmpty()) {
                return QString();
            } else {
                return "[ " + stringList.join(", ") + " ]";
            }
        }
        case QVariant::StringList: {
            QStringList stringList;
            for (const QString &string : variant.toStringList()) {
                stringList.append(jsString(string));
            }
            if (stringList.isEmpty()) {
                return QString();
            } else {
                return "[ " + stringList.join(", ") + " ]";
            }
        }
        case QVariant::DateTime:
            return QString::number(variant.toDateTime().toMSecsSinceEpoch());
        case QVariant::Map: {
            QStringList stringList;
            QVariantMap map = variant.toMap();
            for (const QString &key : map.keys()) {
                QVariant value = map[key];
                QString jsonString = toJsonString(value, options);
                if (!jsonString.isEmpty()) {
                    if (options & IncludeTypeInfo) {
                        stringList.append(QString("%1: [ %2, %3, %4 ]")
                                          .arg(jsString(key), QString::number(value.type()),
                                               QString::number(value.userType()), jsonString));
                    } else {
                        stringList.append(QString("%1: %2").arg(jsString(key), jsonString));
                    }
                }
            }
            return stringList.isEmpty() ? QString() : "{ " + stringList.join(", ") + " }";
        }
        case QVariant::UserType: {
            MetaTypeRegistry::JsonConverters converters =
                    MetaTypeRegistry::jsonConverters(QMetaType::typeName(variant.userType()));
            if (converters.typeToJsonStringConverter) {
                return converters.typeToJsonStringConverter(variant);
            } else {
                const char *typeName = QMetaType::typeName(variant.userType());
                if (typeName) {
                    LogUtil::logError("User type not serializable: %1", typeName);
                } else {
                    LogUtil::logError("Unknown user type: %1", QString::number(variant.userType()));
                }
                return QString();
            }
        }
        default:
            LogUtil::logError("Unknown type: %1", variant.typeName());
            return QString();
    }
}