add bool type support in export json
This commit is contained in:
parent
a9f937b493
commit
ce60055c2d
4
main.cpp
4
main.cpp
@ -26,7 +26,6 @@
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
|
||||
QTreeView * view = new QTreeView;
|
||||
QJsonModel * model = new QJsonModel;
|
||||
|
||||
@ -36,6 +35,7 @@ int main(int argc, char *argv[])
|
||||
"firstName": "John",
|
||||
"lastName": "Smith",
|
||||
"age": 25,
|
||||
"far-sighted": true,
|
||||
"address":
|
||||
{
|
||||
"streetAddress": "21 2nd Street",
|
||||
@ -56,8 +56,6 @@ int main(int argc, char *argv[])
|
||||
]
|
||||
})";
|
||||
|
||||
|
||||
|
||||
model->loadJson(QByteArray::fromStdString(json));
|
||||
view->show();
|
||||
|
||||
|
@ -71,7 +71,7 @@ void QJsonTreeItem::setKey(const QString &key)
|
||||
mKey = key;
|
||||
}
|
||||
|
||||
void QJsonTreeItem::setValue(const QString &value)
|
||||
void QJsonTreeItem::setValue(const QVariant &value)
|
||||
{
|
||||
mValue = value;
|
||||
}
|
||||
@ -86,7 +86,7 @@ QString QJsonTreeItem::key() const
|
||||
return mKey;
|
||||
}
|
||||
|
||||
QString QJsonTreeItem::value() const
|
||||
QVariant QJsonTreeItem::value() const
|
||||
{
|
||||
return mValue;
|
||||
}
|
||||
@ -131,7 +131,7 @@ QJsonTreeItem* QJsonTreeItem::load(const QJsonValue& value, QJsonTreeItem* paren
|
||||
}
|
||||
else
|
||||
{
|
||||
rootItem->setValue(value.toVariant().toString());
|
||||
rootItem->setValue(value.toVariant());
|
||||
rootItem->setType(value.type());
|
||||
}
|
||||
|
||||
@ -239,15 +239,13 @@ QVariant QJsonModel::data(const QModelIndex &index, int role) const
|
||||
return QString("%1").arg(item->key());
|
||||
|
||||
if (index.column() == 1)
|
||||
return QString("%1").arg(item->value());
|
||||
return item->value();
|
||||
} else if (Qt::EditRole == role) {
|
||||
if (index.column() == 1) {
|
||||
return QString("%1").arg(item->value());
|
||||
return item->value();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return QVariant();
|
||||
|
||||
}
|
||||
@ -258,7 +256,7 @@ bool QJsonModel::setData(const QModelIndex &index, const QVariant &value, int ro
|
||||
if (Qt::EditRole == role) {
|
||||
if (col == 1) {
|
||||
QJsonTreeItem *item = static_cast<QJsonTreeItem*>(index.internalPointer());
|
||||
item->setValue(value.toString());
|
||||
item->setValue(value);
|
||||
emit dataChanged(index, index, {Qt::EditRole});
|
||||
return true;
|
||||
}
|
||||
@ -386,7 +384,18 @@ QJsonValue QJsonModel::genJson(QJsonTreeItem * item) const
|
||||
}
|
||||
return arr;
|
||||
} else {
|
||||
QJsonValue va(item->value());
|
||||
QJsonValue va;
|
||||
switch(item->value().type()){
|
||||
case QVariant::Bool:
|
||||
{
|
||||
va = item->value().toBool();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
va = item->value().toString();
|
||||
break;
|
||||
}
|
||||
(item->value());
|
||||
return va;
|
||||
}
|
||||
|
||||
|
13
qjsonmodel.h
13
qjsonmodel.h
@ -46,26 +46,22 @@ public:
|
||||
int childCount() const;
|
||||
int row() const;
|
||||
void setKey(const QString& key);
|
||||
void setValue(const QString& value);
|
||||
void setValue(const QVariant& value);
|
||||
void setType(const QJsonValue::Type& type);
|
||||
QString key() const;
|
||||
QString value() const;
|
||||
QVariant value() const;
|
||||
QJsonValue::Type type() const;
|
||||
|
||||
|
||||
static QJsonTreeItem* load(const QJsonValue& value, QJsonTreeItem * parent = 0);
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
private:
|
||||
QString mKey;
|
||||
QString mValue;
|
||||
QVariant mValue;
|
||||
QJsonValue::Type mType;
|
||||
QList<QJsonTreeItem*> mChilds;
|
||||
QJsonTreeItem * mParent;
|
||||
|
||||
|
||||
};
|
||||
|
||||
//---------------------------------------------------
|
||||
@ -94,11 +90,8 @@ public:
|
||||
|
||||
private:
|
||||
QJsonValue genJson(QJsonTreeItem *) const;
|
||||
|
||||
QJsonTreeItem * mRootItem;
|
||||
QStringList mHeaders;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // QJSONMODEL_H
|
||||
|
Loading…
Reference in New Issue
Block a user