我在我的应用程序中创建了一个 sqlquery 方法,它基本上获取一个 SQL 命令并返回 JSON 结果,问题是当填充
我尝试先创建一个 QObject 然后将其序列化为 JSON,但我无法实现它。
如何使此方法生成有效的 JSON,即使数据包含
"
和其他有问题的字符时,这会创建无效的 JSON。我尝试先创建一个 QObject 然后将其序列化为 JSON,但我无法实现它。
如何使此方法生成有效的 JSON,即使数据包含
"
符号?QString Api::SQLQuery(const QString & sqlquery)
{
QSqlQuery query;
bool firstline = true;
query.setForwardOnly(true);
if(query.exec(sqlquery))
{
QString answer = "[";
while(query.next())
{
if(firstline){firstline = false;}else {answer += ",";}
answer += "{";
for(int x=0; x < query.record().count(); ++x)
{
if(x != 0){answer += ",";}
answer += "\""+query.record().fieldName(x) +"\":\""+ query.value(x).toString()+"\"";
}
answer += "}";
}
answer += "]";
return answer;
}
else
{
return query.lastError().text() ;
}
}
解决方案:
感谢答案,这是正确的方法:
QString Api::SQLQuery(const QString & sqlquery) {
QSqlQuery query;
query.setForwardOnly(true);
if (!query.exec(sqlquery))return QString();
QJsonDocument json;
QJsonArray recordsArray;
while(query.next())
{
QJsonObject recordObject;
for(int x=0; x < query.record().count(); x++)
{
recordObject.insert( query.record().fieldName(x),QJsonValue::fromVariant(query.value(x)) );
}
recordsArray.push_back(recordObject);
}
json.setArray(recordsArray);
return json.toJson();
}