Qt读写Json格式配置文件
头文件Config.h
1 #pragma once 2 3 #include <QSettings> 4 #include <QFile> 5 #include <QJsonDocument> 6 #include <QJsonObject> 7 #include <QJsonArray> 8 9 class Config 10 { 11 public: 12 Config(const QString &fileName); 13 14 void write(const QString &key, const QVariant& value); 15 QVariant read(const QString &key, const QString &default = ""); 16 bool hasParam(const QString &key); 17 QString readString(const QString &key, const QString &default = ""); 18 bool readBool(const QString &key, bool default = false); 19 float readFloat(const QString &key, float default = 0.0f); 20 int readInt(const QString &key, int default = 0); 21 22 private: 23 QJsonObject m_rootObj; 24 QString m_jsonPath; 25 };
源文件Config.cpp
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。1 #include "Config.h" 2 3 Config::Config(const QString &fileName) : m_jsonPath(fileName) 4 { 5 QFile loadFile(m_jsonPath); 6 if (!loadFile.open(QIODevice::ReadOnly)) 7 { 8 return; 9 } 10 QByteArray allData = loadFile.readAll(); 11 loadFile.close(); 12 //由于QT保存的Json格式外部有中括号,但读取时有中括号会报错,因此需要删除,以下两行代码是为了删除中括号,首尾各占3个字符 13 //而首部删除6个字符,是防止手动修改json文件时多出来的3个编码格式字符 14 allData.remove(allData.size() - 3, 3); 15 allData.remove(0, 6); 16 QJsonParseError jsondError; 17 QJsonDocument jsonDoc = QJsonDocument::fromJson(allData, &jsondError); 18 if (jsondError.error != QJsonParseError::NoError) 19 { 20 return; 21 } 22 m_rootObj = jsonDoc.object(); 23 } 24 25 void Config::write(const QString &key, const QVariant &value) 26 { 27 m_rootObj.insert(key, value.toJsonValue()); 28 QJsonArray arr; 29 arr.push_back(m_rootObj); 30 QJsonDocument jsonDoc(arr); 31 QByteArray jsonArry = jsonDoc.toJson(); 32 QFile file(m_jsonPath); 33 if (!file.open(QIODevice::WriteOnly)) 34 { 35 return; 36 } 37 file.write(jsonArry); 38 file.close(); 39 } 40 41 QVariant Config::read(const QString &key, const QString &default) 42 { 43 if (hasParam(key)) 44 { 45 QVariant subObj = m_rootObj.value(key).toVariant(); 46 return subObj; 47 } 48 return default; 49 } 50 51 QString Config::readString(const QString &key, const QString &default) 52 { 53 if (hasParam(key)) 54 { 55 QString subObj = m_rootObj.value(key).toString(); 56 return subObj; 57 } 58 return default; 59 } 60 61 bool Config::readBool(const QString &key, bool default) 62 { 63 if (hasParam(key)) 64 { 65 bool subObj = m_rootObj.value(key).toBool(); 66 return subObj; 67 } 68 return default; 69 } 70 71 float Config::readFloat(const QString &key, float default) 72 { 73 if (hasParam(key)) 74 { 75 float subObj = m_rootObj.value(key).toDouble(); 76 return subObj; 77 } 78 return default; 79 } 80 81 int Config::readInt(const QString &key, int default) 82 { 83 if (hasParam(key)) 84 { 85 int subObj = m_rootObj.value(key).toInt(); 86 return subObj; 87 } 88 return default; 89 } 90 91 bool Config::hasParam(const QString &key) 92 { 93 return m_rootObj.contains(key); 94 }

更多精彩