


#include <QJsonDocument>#include <QJsonObject>#include <QJsonArray>#include <QFile>#include <QDebug>void createJsonFile() {// 創建一個JSON對象 鍵值對QJsonObject jsonObj;jsonObj["name"] = "John Doe";jsonObj["age"] = 30;jsonObj["email"] = "john.doe@example.com";// 創建一個JSON數組QJsonArray jsonArr;jsonArr.append("C++");jsonArr.append("Python");
jsonArr.append("JavaScript");jsonArr.append(123);// 將數組添加到JSON對象
jsonObj["languages"] = jsonArr;// 將JSON對象轉換為JSON文檔
QJsonDocument jsonDoc(jsonObj);// 將JSON文檔轉換為字符串(也可以是壓縮格式)
QByteArray jsonData = jsonDoc.toJson(QJsonDocument::Indented);// 將JSON數據寫入文件
QFile file("output.json");if (!file.open(QIODevice::WriteOnly)) {qDebug() << "Failed to open file for writing";return;}file.write(jsonData);file.close();}qDebug() << "JSON data saved to output.json";int main() {createJsonFile();return 0;}

#include "widget.h"#include "ui_widget.h"#include <QFile>#include <QJsonArray>#include <QJsonDocument>#include <QJsonObject>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{}ui->setupUi(this);QJsonObject rootObj;rootObj["cityid"] = "1010100";rootObj["date"]
= "2024-01-23";rootObj["weather"] = "雨夾雪";rootObj["tmp"]
= 3;QJsonArray jsonArray;jsonArray.append("data1");jsonArray.append("data2");jsonArray.append("data3");jsonArray.append(100);rootObj["testArry"] = jsonArray;QJsonDocument jsonDoc(rootObj);QByteArray jsonArry = jsonDoc.toJson();QFile file("D:/QT/test.json");file.open(QIODevice::WriteOnly);file.write(jsonArry);file.close();Widget::~Widget(){delete ui;}

#include "widget.h"#include "ui_widget.h"#include <QFile>#include <QJsonArray>#include <QJsonDocument>#include <QJsonObject>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);QJsonObject rootObj;rootObj["cityid"] = "1010100";rootObj["date"]
= "2024-01-23";rootObj["weather"] = "雨夾雪";
= 3;rootObj["tmp"]
//Json數組
QJsonArray jsonArray;jsonArray.append("data1");jsonArray.append("data2");jsonArray.append("data3");jsonArray.append(100);rootObj["testArry"] = jsonArray;QJsonObject alarmObj;alarmObj["alamType"] = "雪災";alarmObj["alamLeve"] = "黃色";alarmObj["alamTitle"] = "福州市警告老陳多穿點衣服";rootObj["alam"] = alarmObj;QJsonObject day0;day0["day"] = "星期一";day0["wea"] = "晴";day0["tem"] = 5.7;QJsonObject day1;day1["day"] = "星期二";day1["wea"] = "晴";day1["tem"] = 7;QJsonObject day2;day2["day"] = "星期三";day2["wea"] = "多云";day2["tem"] = 17;QJsonArray dayArray;dayArray.append(day0);dayArray.append(day1);dayArray.append(day2);rootObj["days"] = dayArray;//通過QJsonDocument把JSON數據轉換成QByteArrayQJsonDocument jsonDoc(rootObj);QByteArray jsonArry = jsonDoc.toJson();QFile file("D:/QT/test.json");file.open(QIODevice::WriteOnly);file.write(jsonArry);file.close();}Widget::~Widget(){delete ui;}

#include <QJsonDocument>#include <QJsonObject>#include <QJsonArray>#include <QDebug>void parseJson() {// JSON字符串/*R 是用于定義原始字符串字面量(Raw String Literal)的標記。在C++中,原始字符串字面量是一種方便的語法,用于創建包含多行文本和特殊字符的字符串,而無需轉義。R"("chenlichen")"*/QString testStr = "chenli\"c";QString jsonString = R"({"name": "John Doe","age": 30,"email": "john.doe@example.com","skills": ["C++", "Python", "JavaScript"]})";/*jsonString = "{\n"" \"name\": \"John Doe\",\n"" \"age\": 30\n""}";*/// 將JSON字符串轉換為QJsonDocumentQJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8());// 檢查JSON文檔是否包含一個對象if (!jsonDoc.isNull() && jsonDoc.isObject()) {// 獲取JSON對象QJsonObject jsonObj = jsonDoc.object();
// 訪問對象的鍵值
QString name = jsonObj["name"].toString();int age = jsonObj["age"].toInt();QString email = jsonObj["email"].toString();qDebug() << "Name:" << name;qDebug() << "Age:" << age;qDebug() << "Email:" << email;}// 處理JSON數組
if (jsonObj.contains("skills") && jsonObj["skills"].isArray()) {QJsonArray skillsArray = jsonObj["skills"].toArray();for (const QJsonValue &value : skillsArray) {qDebug() << "Skill:" << value.toString();}}} else {qDebug() << "Invalid JSON...";}int main() {parseJson();return 0;}

#include <QJsonDocument>#include <QJsonObject>#include <QMap>#include <QDebug>void parseJsonToMap() {// JSON字符串
QString jsonString = R"({"name": "John Doe","age": "30","email": "john.doe@example.com"})";// 將JSON字符串轉換為QJsonDocumentQJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8());// 準備一個QMap來存儲解析的數據
QMap<QString, QString> dataMap;// 解析JSON對象并填充QMapif (!jsonDoc.isNull() && jsonDoc.isObject()) {QJsonObject jsonObj = jsonDoc.object();for (auto key : jsonObj.keys()) {dataMap[key] = jsonObj.value(key).toString();}} else {qDebug() << "Invalid JSON...";}// 打印QMap內容
for (auto key : dataMap.keys()) {qDebug() << key << ":" << dataMap[key];}}int main() {parseJsonToMap();return 0;}


#include "widget.h"#include "ui_widget.h"#include <QFile>#include <QJsonDocument>#include <QJsonObject>#include <QDebug>#include <QJsonArray>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);//第一步:讀取JSON文件保存到QByteArray中
QFile file("D:/QT/test.json");file.open(QIODevice::ReadOnly);QByteArray rawData = file.readAll();file.close();//第二步:把QByteArray轉成JSONDocQJsonDocument jsonDoc = QJsonDocument::fromJson(rawData);if( !jsonDoc.isNull() && jsonDoc.isObject()){//第三步:把JsonDoc轉成JsonObjQJsonObject jsonRoot = jsonDoc.object();//第四步:如果解析普通鍵值對,通過“下表鍵”來獲取值
QString strW
= jsonRoot["weather"].toString();QString strCityId = jsonRoot["cityid"].toString();int tempretrue = jsonRoot["tmp"].toInt();qDebug() << strW;qDebug() << strCityId;qDebug() << QString::number(tempretrue);//第五步:判讀是否是一個數組if(jsonRoot.contains("testArry") && jsonRoot["testArry"].isArray()){qDebug() << "array";//如果是數組,轉換成JSON數組QJsonArray testArray = jsonRoot["testArry"].toArray();//遍歷數組,訪問每一項for(QJsonValue val : testArray){//QJsonValue的type函數返回數據類型,根據不同的數據類型處理數據// QJsonValue::Type t = val.type();switch (val.type()) {case QJsonValue::Double:qDebug() << QString::number(val.toDouble());break;case QJsonValue::String:qDebug() << val.toString();break;case QJsonValue::Object:break;}}}//第六步:判斷某個鍵對應的值,是否是一個json對象if(jsonRoot.contains("alam") && jsonRoot["alam"].isObject()){//轉成Json對象后處理QJsonObject alamObj = jsonRoot["alam"].toObject();qDebug() << alamObj["alamLeve"].toString();qDebug() << alamObj["alamTitle"].toString();qDebug() << alamObj["alamType"].toString();}if(jsonRoot.contains("days") && jsonRoot["days"].isArray()){QJsonArray dayArray = jsonRoot["days"].toArray();for(QJsonValue val : dayArray){//if(val.type() ==QJsonValue::Object ){if(val.isObject()){QJsonObject obj = val.toObject();qDebug() << obj["day"].toString();qDebug() << QString::number(obj["tem"].toDouble());qDebug() << obj["wea"].toString();}}}}}Widget::~Widget(){delete ui;}
