Qt Json

老司机最近又有Qt项目了

1、QMap与Json字符串

// serialize: 
    QMap<QString, QVariant> maps;
    maps.insert("a", "0.98");
    maps.insert("libType", "1");
    maps.insert("somestr", "hello");

    QJsonDocument serialize = QJsonDocument::fromVariant(QVariant(maps)); // 差异
    QString json = QString(serialize.toJson(QJsonDocument::Indented));
    qDebug() << json << endl;
// deserialize:
    QJsonDocument deserialize = QJsonDocument::fromJson(json.toUtf8());
    QJsonObject jsonObj = deserialize.object();
    qDebug()
            << jsonObj.value("a").toVariant().toString()
            << jsonObj.value("libType").toVariant().toString()
            << jsonObj.value("somestr").toVariant().toString()
            << endl;

2、QJsonObject与Json字符串

    QJsonObject maps;
    maps.insert("a", 0.98);
    maps.insert("libType", 1);
    maps.insert("somestr", "hello");

    QJsonDocument doc = QJsonDocument(maps);  // 差异
    QString json = QString(doc.toJson(QJsonDocument::Indented)); 
    qDebug() << json << endl;

    QJsonDocument deserialize = QJsonDocument::fromJson(json.toUtf8());
    QJsonObject jsonObj = deserialize.object();
    qDebug()
            << jsonObj.value("a").toVariant().toString()
            << jsonObj.value("libType").toVariant().toString()
            << jsonObj.value("somestr").toVariant().toString()
            << endl;
}

3、坑

如果a的值不是QString类型,得到的value将为空且不报错

QString value = jsonObject.value("a").toString(); // value是空的对于非QString类型的a的值,比如浮点、整型

正确做法是用toVariant().toString()

QString value = jsonObject.value("a").toVariant().toString(); // 如果a的值不是QString类型,要先加toVariant()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值