可以使用Qt中的Json库来实现结构体和Json之间的相互转化。以下是封装的两个函数,一个用于将结构体转换为Json,另一个用于将Json转换为结构体:
#include <QJsonObject>
#include <QJsonDocument>
// 将结构体转换为Json
QJsonObject st_subjectToJson(const st_subject& subject) {
QJsonObject json;
json["subject_number"] = subject.subject_number;
json["subject_type"] = subject.subject_type;
json["subject_name"] = subject.subject_name;
// 图片信息转换为Base64字符串存储
QByteArray imageData;
QBuffer buffer(&imageData);
buffer.open(QIODevice::WriteOnly);
subject.image.save(&buffer, "PNG"); // 假设图片格式为PNG
QString base64Image = QString::fromLatin1(imageData.toBase64().data());
json["image"] = base64Image;
return json;
}
// 将Json转换为结构体
st_subject jsonToSt_subject(const QJsonObject& json) {
st_subject subject;
subject.subject_number = json["subject_number"].toInt();
subject.subject_type = json["subject_type"].toInt();
subject.subject_name = json["subject_name"].toString();
// 从Base64字符串还原图片信息
QString base64Image = json["image"].toString();
QByteArray imageData = QByteArray::fromBase64(base64Image.toLatin1());
QImage image;
image.loadFromData(imageData); // 假设图片格式为PNG
subject.image = image;
return subject;
}
你可以根据具体需要进行修改,比如更改图片存储格式、使用其他Json库等。希望对你有帮助!
内容由零声教学AI助手提供,问题来源于学员提问