如何创建QJsonDocument?

时间:2017-12-04 10:30:56

标签: c++ json qt qjson

我想创建一个QJsonDocument,但我找不到在文档中推送数据的方法。在JsonBuilder::CreateContact结束时,我的文件似乎是空的。 X)可以提供一些帮助。

我尝试使用某些指针并将其添加到我的文档中,因为我正在考虑销毁我的不同对象(contactObjdetailObjaddressObj,{ {1}})但是使用这种方法,我无法构建date类型(无法访问QJsonValue成员private),所以我错了吗?

JsonBuilder.h

QjsonValue::QJsonValue

JsonBuilder.cpp

#ifndef JSONBUILDER_H
#define JSONBUILDER_H
#include <QObject>
#include <QJsonDocument>
#include <QMap>
#include <QString>
#include <QList>

class JsonBuilder: public QObject
{
    Q_OBJECT
private:
    QJsonDocument* document;
public:
    JsonBuilder();
    ~JsonBuilder();
    void CreateContact(QMap<QString,QList<QString>> map);
    void CreateMessage(QMap<QString,QString> map);

    QJsonDocument* getDocument(){ return document; }
};

#endif // JSONBUILDER_H

1 个答案:

答案 0 :(得分:0)

注意(在文档中)array()方法的签名:

QJsonArray QJsonDocument::array() const

当你以这种方式使用它时:

document->array().append(contactObj);

您将对象附加到doc数组的临时副本。

你最好创建一个数组,追加你的对象,然后用这种方式将数组设置为文档:

QJsonArray array;
array.append(contactObj);
//append every else object you need
document->setArray(array);

而不是

if(document->isArray()){
    document->array().append(contactObj);
}
else {
    qDebug()<<"JsonDocument not ready for insert";
}