我正在使用Qt(5.5),我想在客户端 - 服务器应用程序中以JSON格式交换数据。
所以格式是不变的:
{
"ball":
{
"posx": 12,
"posy": 35
}
}
我希望能够像这样定义ByteArray或字符串:
QByteArray data = "{\"ball\":{\"posx\":%s,\"posy\":%s}}"
然后只需将其中的值写入字符串。
我该怎么做?
答案 0 :(得分:3)
.home .first-level-post {
height: 100%;
margin: 0;
padding-top: 45.1613%;
width: 100%;
}
已融入Qt 5.它易于使用,并且非常容易为您准备好。
QtJson
输出
#include <QCoreApplication>
#include <QDebug>
#include <QJsonObject>
#include <QJsonDocument>
void saveToJson(QJsonObject & json);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QJsonObject jsonObject;
saveToJson(jsonObject);
QJsonDocument jsonDoc(jsonObject);
qDebug() << "Example of QJsonDocument::toJson() >>>";
qDebug() << jsonDoc.toJson();
qDebug() << "<<<";
return a.exec();
}
void saveToJson(QJsonObject & json)
{
QJsonObject ball;
ball["posx"] = 12;
ball["posy"] = 35;
json["ball"] = ball;
}
注意:Example of QJsonDocument::toJson() >>>
"{
"ball": {
"posx": 12,
"posy": 35
}
}
"
<<<
在打印时将qDebug()
个对象包装在引号中。要摆脱这种情况,请将QString
传递给QString
。它会在每行末尾为您qPrintable()
添加endl
。
有关更复杂的例子,请看官方:
JSON保存游戏示例
http://doc.qt.io/qt-5/qtcore-json-savegame-example.html
希望有所帮助。
答案 1 :(得分:1)
以下是字符串操作的更多示例,但为了便于阅读和维护,请使用QJson
类。
QString str;
str = QString("{\"ball\":{\"posx\":%1,\"posy\":%2}}").arg(12).arg(35);
qDebug() << qPrintable(str);
QByteArray ba = str.toLocal8Bit();
qDebug() << ba;
QString str2;
str2 = "{\"ball\":{\"posx\":"
+ QString::number(12)
+ ",\"posy\":"
+ QString::number(35)
+ "}}";
qDebug() << qPrintable(str2);
输出
{"ball":{"posx":12,"posy":35}}
"{"ball":{"posx":12,"posy":35}}"
{"ball":{"posx":12,"posy":35}}
再次请注意,在打印qDebug()
对象时,引号会由QByteArray
添加。
希望有所帮助。