предисловие
Qt поддержка JSON обеспечивает простой в использовании C ++ API для синтаксического анализа, изменять и сохранять данные в формате JSON. Он также поддерживает, чтобы сохранить данные в двоичном формате, который является прямым «ММАПОМ», и доступ очень быстро.
Считывание данных в формате JSON
Json файл, 1.json
{
"name": "flywm",
"age": "18",
"home": "tianjin"
}
Порядок действий:
#include <QCoreApplication>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QFile>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("D:/1.json");
if(!file.open(QIODevice::ReadOnly)) {
qDebug() << "File open failed!";
} else {
qDebug() <<"File open successfully!";
}
QJsonDocument jdc(QJsonDocument::fromJson(file.readAll()));
QJsonObject obj = jdc.object();
qDebug() << obj.value("name").toString()
<< obj.value("age").toString()
<< obj.value("home").toString();
}
Запись данных в формате JSON
И содержимое файла, как описано выше.
#include <QCoreApplication>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QFile>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("D:/1.json");
if(!file.open(QIODevice::WriteOnly)) {
qDebug() << "File open failed!";
} else {
qDebug() <<"File open successfully!";
}
QJsonObject obj;
obj["age"] = "18";
obj["name"] = "flywm";
obj.insert("home", "tianjin");
QJsonDocument jdoc(obj);
file.write(jdoc.toJson());
file.flush();
}
Используйте QJsonArray:
#include <QCoreApplication>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QFile>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("D:/1.json");
if(!file.open(QIODevice::WriteOnly)) {
qDebug() << "File open failed!";
} else {
qDebug() <<"File open successfully!";
}
QJsonObject rootObj;
QJsonObject obj;
obj["age"] = "18";
obj["name"] = "flywm";
obj.insert("home", "tianjin");
QJsonObject obj1;
obj1["age"] = "19";
obj1["name"] = "flywm";
obj1.insert("home", "tianjin");
QJsonArray classArray;
classArray.append(obj);
classArray.append(obj1);
rootObj["class"] = classArray;
QJsonDocument jdoc(rootObj);
file.write(jdoc.toJson());
file.flush();
}
JSON:
{
"class": [
{
"age": "18",
"home": "tianjin",
"name": "flywm"
},
{
"age": "19",
"home": "tianjin",
"name": "flywm"
}
]
}
Изменить данные JSon
Может потребоваться изменить после того, как мы иногда JSON считывать данные, а затем переписать его здесь , в самом деле, ключевым моментом является file.seek (0) , написанный с нуля, или модифицировать будет продолжать записывать что приводит к дублированию. Этот случай подходит JSON изменить существующие данные. Если вам нужно добавить или reduce'd лучше пустые файлы переписать его.
#include <QCoreApplication>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QFile>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("D:/1.json");
if(!file.open(QIODevice::ReadWrite)) {
qDebug() << "File open failed!";
} else {
qDebug() <<"File open successfully!";
}
QJsonDocument jdc(QJsonDocument::fromJson(file.readAll()));
QJsonObject obj = jdc.object();
// 修改 age
obj["age"] = "99";
jdc.setObject(obj);
file.seek(0);
file.write(jdc.toJson());
file.flush();
}