Development/Qt
간단한 JSON 예제
독행소년
2016. 5. 24. 10:52
JSON은 데이터를 쉽게 구조화하여 read/write하는 툴이다. 구조화 된 데이터를 로컬에 파일로 저장하거나 장치간의 통신 메시지 사용할 때 유용하다.
실제 구조를 보면 다음과 같이 변수명과 데이터 형태로 쌍을 이루고 있다.
이 데이터를 읽고/갱신하는 툴은 다음과 같다.
QT에서도 JSON 데이터를 객체화 하기 위한 QJsonObject 클래스와 문서화 하기 위한 QJsonDocument 클래스 등을 제공하고 있다.
다음은 QT에서 JSON을 이용하는 간단한 예제이다.
<deviceinfo.h>
#ifndef DEVICEINFO_H #define DEVICEINFO_H #include <QJsonObject> #include <QDebug> #include <QFile> #include <QJsonDocument> #include <QByteArray> class DeviceInfo { public: DeviceInfo(); QJsonObject jsonObj; QString getDevName() const; void setDevName(const QString &value); QString getDevID() const; void setDevID(const QString &value); bool saveJSON(); bool loadJSON(); void showDevInfo(); private: QString devName; QString devID; }; #endif // DEVICEINFO_H |
<deviceinfo.cpp>
#include "deviceinfo.h" DeviceInfo::DeviceInfo() { } QString DeviceInfo::getDevName() const { return devName; } void DeviceInfo::setDevName(const QString &value) { devName = value; } QString DeviceInfo::getDevID() const { return devID; } void DeviceInfo::setDevID(const QString &value) { devID = value; } bool DeviceInfo::saveJSON() { this->jsonObj["devName"] = devName; this->jsonObj["devID"] = devID; QFile saveFile(QStringLiteral("deviceInfo.json")); if(!saveFile.open(QIODevice::WriteOnly)){ qWarning("Cound not open json file to save"); return false; } QJsonDocument saveDoc(jsonObj); saveFile.write(saveDoc.toJson()); showDevInfo(); return true; } bool DeviceInfo::loadJSON() { QFile loadFile(QStringLiteral("deviceInfo.json")); if(!loadFile.open(QIODevice::ReadOnly)){ qWarning("Could not open json file to read"); return false; } QByteArray loadData = loadFile.readAll(); QJsonDocument loadDoc(QJsonDocument::fromJson(loadData)); jsonObj = loadDoc.object(); devName = jsonObj["devName"].toString(); devID = jsonObj["devID"].toString(); showDevInfo(); } void DeviceInfo::showDevInfo() { qDebug() << ":: Device Name: " << devName; qDebug() << ":: Device ID: " << devID; qDebug() << ":: jsonObj[\"devName\"] = " << jsonObj["devName"].toString(); qDebug() << ":: jsonObj[\"devID\"] = " << jsonObj["devID"].toString(); } |