Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Column Widget
- HTTP
- node.js
- Flutter Example
- Load Image
- Flutter Tutorial
- FutureBuilder
- sqlite
- Row
- InkWell
- Hello World
- Flutter 예제
- CrossAxisAlignment
- flutter
- Flutter 강좌
- Snackbar
- Cached Image
- Row Widget
- ListTile
- WillPopScope
- Networking
- navigator
- listview
- Flutter 앱 배포
- 반석천
- Scaffold
- MainAxisAlignment
- Image.network
- AppBar
- ListView.builder
Archives
- Today
- Total
꿈꾸는 시스템 디자이너
간단한 JSON 예제 본문
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(); } |
'Development > Qt' 카테고리의 다른 글
QT 변수명 동적 할당(Dynamic variable naming in QT) (0) | 2016.05.24 |
---|---|
HTML의 javascript단에서 QT 슬롯 함수 호출 방법 (0) | 2015.12.02 |
QQuickWidget 사용법 (1) | 2015.11.26 |
QML간의 fuction 호출(Signal/Slot) (0) | 2015.11.25 |
Qt5에서 QtGui를 include해도 위젯들을 사용할 수 없는 경우 (0) | 2015.09.03 |
Comments