Qt - 将整数数据写入JSON

时间:2015-09-30 22:13:14

标签: c++ json qt

我正在使用Qt(5.5),我想在客户端 - 服务器应用程序中以JSON格式交换数据。

所以格式是不变的:

{
    "ball":
    {
        "posx": 12,
        "posy": 35
    }
}

我希望能够像这样定义ByteArray或字符串:

QByteArray data = "{\"ball\":{\"posx\":%s,\"posy\":%s}}"

然后只需将其中的值写入字符串。

我该怎么做?

2 个答案:

答案 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添加。

希望有所帮助。