欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:c++ qt Json文件操作

柚子快報(bào)激活碼778899分享:c++ qt Json文件操作

http://yzkb.51969.com/

JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,常用于前端與后端之間的數(shù)據(jù)傳輸。它以簡(jiǎn)潔、易讀的文本格式來(lái)表示結(jié)構(gòu)化數(shù)據(jù),通常由鍵值對(duì)(key-value pairs)組成,支持?jǐn)?shù)組(array)和嵌套對(duì)象(nested objects)。JSON具有廣泛的應(yīng)用,特別在Web開發(fā)中被廣泛使用。

JSON的語(yǔ)法規(guī)則簡(jiǎn)單明了,常見的數(shù)據(jù)類型包括字符串、數(shù)字、布爾值、null、數(shù)組和對(duì)象。它可以表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),并且易于解析和生成。JSON數(shù)據(jù)可以通過(guò)JavaScript的內(nèi)置方法進(jìn)行解析和處理,也可以在不同編程語(yǔ)言之間進(jìn)行轉(zhuǎn)換和傳遞。

JSON使用場(chǎng)景:配置文件、序列化、定義接口

JSON是存儲(chǔ)和交換文本信息的語(yǔ)法,類似XML,它比XML更小、更快、更加容易解析

QJsonDocument類

QJsonDocument 是 Qt 框架中用于處理 JSON(JavaScript Object Notation)數(shù)據(jù)的類。它提供了一種方便的方式來(lái)創(chuàng)建、解析和操作 JSON 數(shù)據(jù)。

QJsonDocument是一個(gè)包含了完整JSON文檔的類,支持以UTF-8編碼的文本和QT自身的二進(jìn)制格式來(lái)讀寫JSON文檔。

創(chuàng)建 JSON 對(duì)象:使用 QJsonObject 類創(chuàng)建一個(gè) JSON 對(duì)象,并將其添加到 QJsonDocument 中。 解析 JSON 字符串:通過(guò)調(diào)用 QJsonDocument::fromJson() 靜態(tài)函數(shù)并傳入 JSON 字符串,可以將其解析為 QJsonDocument 對(duì)象 將 JSON 對(duì)象轉(zhuǎn)換為字符串:通過(guò)調(diào)用 QJsonDocument::toJson() 函數(shù),可以將 QJsonDocument 對(duì)象轉(zhuǎn)換為 JSON 字符串。 訪問(wèn)和修改 JSON 對(duì)象的值:通過(guò)訪問(wèn) QJsonDocument 和 QJsonObject 的成員函數(shù),可以讀取和修改 JSON 對(duì)象中的鍵值對(duì)。 支持多種數(shù)據(jù)類型:QJsonDocument 可以處理各種類型的數(shù)據(jù),包括字符串、整數(shù)、浮點(diǎn)數(shù)、布爾值、數(shù)組和嵌套對(duì)象等。

常用函數(shù)

QJsonDocument::fromJson(); //將 JSON 字符串解析為 QJsonDocument 對(duì)象。

QJsonDocument::fromVarient(); //將Varient類型解析為 QJsonDocument 對(duì)象

QJsonDocument::toJson(); //將 QJsonDocument 對(duì)象轉(zhuǎn)換為 JSON 字符串。

QJsonDocument::object(); //獲取表示 JSON 文檔的頂層對(duì)象的 QJsonObject 對(duì)象

QJsonDocument::isArray(); //檢查 QJsonDocument 是否表示一個(gè) JSON 數(shù)組。

QJsonDocument::array(); //獲取 QJsonDocument 中的 JSON 數(shù)組。

QJsonDocument::isEmpty(); //檢查 QJsonDocument 是否為空。

QJsonDocument::isNull(); //檢查 QJsonDocument 是否為 null。

QJsonObject

QJsonObject 是 Qt 中用于表示 JSON 對(duì)象的類。它提供了一組函數(shù)來(lái)操作和訪問(wèn) JSON 對(duì)象的鍵值對(duì)。

常用函數(shù)

QJsonObject::insert(); //向 JSON 對(duì)象中插入一個(gè)鍵值對(duì)。

QJsonObject::contains(); //檢查 JSON 對(duì)象中是否包含指定的鍵。

QJsonObject::value(); //獲取指定鍵的值。

QJsonObject::keys(); //返回 JSON 對(duì)象中所有鍵的列表。

QJsonObject::remove(); //從 JSON 對(duì)象中刪除指定的鍵及其對(duì)應(yīng)的值。

QJsonObject::isEmpty(); //檢查 JSON 對(duì)象是否為空。

QJsonValue

QJsonValue 是 Qt 中用于表示 JSON 值的類。它是一個(gè)通用的數(shù)據(jù)類型,可以表示 JSON 中的各種數(shù)據(jù)類型,包括字符串、數(shù)字、布爾值、數(shù)組、對(duì)象和 null 值。

常用函數(shù)

類型檢測(cè)函數(shù):

bool isNull() const:檢查值是否為 null。bool isBool() const:檢查值是否為布爾類型。bool isDouble() const:檢查值是否為雙精度浮點(diǎn)數(shù)。bool isString() const:檢查值是否為字符串。bool isArray() const:檢查值是否為數(shù)組。bool isObject() const:檢查值是否為對(duì)象。

獲取值函數(shù):

double toDouble(bool *ok = nullptr) const:將值轉(zhuǎn)換為雙精度浮點(diǎn)數(shù)。QString toString() const:將值轉(zhuǎn)換為字符串。bool toBool() const:將值轉(zhuǎn)換為布爾值。int toInt() const:將值轉(zhuǎn)換為整數(shù)。QJsonArray toArray() const:將值轉(zhuǎn)換為數(shù)組。QJsonObject toObject() const:將值轉(zhuǎn)換為對(duì)象。

其他常用函數(shù):

bool operator==(const QJsonValue &other) const:比較兩個(gè) QJsonValue 對(duì)象是否相等。QJsonValue operator[](int i) const:訪問(wèn)數(shù)組中的元素。QJsonValue operator[](const QString &key) const:訪問(wèn)對(duì)象中指定鍵對(duì)應(yīng)的值。

數(shù)據(jù)寫入JSON文件

#include

#include //JSON文檔

#include //JSON對(duì)象

#include//JSON異常捕獲

//將數(shù)據(jù)信息寫入JSON文件

void QJsonOpen::writeJson()

{

//1.創(chuàng)建JSON對(duì)象

QJsonObject mysqlinfo;

mysqlinfo.insert("ip","192.168.0.125");

mysqlinfo.insert("port",3308);

mysqlinfo.insert("user","root");

mysqlinfo.insert("password","123456");

QJsonObject jsoninfo;

jsoninfo.insert("code",1);

jsoninfo.insert("dbmsg","MYSQL數(shù)據(jù)庫(kù)配置參數(shù)");

jsoninfo.insert("data",mysqlinfo);//將json對(duì)象作為Json對(duì)象插入的數(shù)據(jù)值

//2.創(chuàng)建Json文檔

QJsonDocument jsondoc;

jsondoc.setObject(jsoninfo);

//3.創(chuàng)建文件

QFile qfile("./databasejsonfiles.json");

if(qfile.open(QIODevice::writeOnly))

{

qfile.write(jsondoc.toJson());

qfile.close();

}

//http發(fā)送json數(shù)據(jù)

QByteArray data = jsondoc.toJson();

qDebug() << "url:" << url << ",data:" << QString(data);

QNetworkReply *reply = m_manager->post(request, data);

}

//從QVarient讀取數(shù)據(jù)

QMap json;

json.insert("login", login);

json.insert("web_server", web_server);

QJsonDocument jsonDocument = QJsonDocument::fromVariant(json);

if (jsonDocument.isNull() == true) {

qDebug() << "QJsonDocument::fromVariant錯(cuò)誤";

return;

}

從json文件讀出數(shù)據(jù)

QString strjson;

QFile qfiles("./databasejsonfiles.json");

if(qfiles.open(QIODevice::ReadOnly))

{

strjson = qfiles.readAll();

qfiles.close();

}

QJsonParseError jsonerror;//返回JSON解析錯(cuò)誤的時(shí)候,報(bào)告錯(cuò)誤信息

QJsonDocument jsondoc = QJsonDocument::fromJson(strjson.toUtf8(),&jsonerror);

QString strtemp;

if(!jsondoc.isEmpty() && (jsonerror.error == QJsonParseError::NoError))

{

//只要jsondoc不為空,和jsonerror沒(méi)有錯(cuò)誤

//將他轉(zhuǎn)換為JSON對(duì)象

QJsonObject json = jsondoc.object();

QJsonValue code = json.value("code");

QJsonValue data = json.value("data");

//檢查數(shù)據(jù)

if(code.isUndefined() || code.toDouble() != 1 || data.isUndefined() || !data.isObject())

{

qDebug()<<"轉(zhuǎn)換JSon數(shù)據(jù)錯(cuò)誤,請(qǐng)重新檢查!";

exit(100);

}

//如果沒(méi)有錯(cuò)誤,讀取data數(shù)據(jù)信息

QJsonObject databaseinfo = data.toObject();

QJsonObject dbip = databaseinfo.value("ip");

QJsonObject dbport = databaseinfo.value("port");

}

//遍歷json文檔的鍵并查找匹配的鍵值對(duì)

QJsonParseError err;

QJsonDocument doc = QJsonDocument::fromJson(json, &err);

if (err.error == QJsonParseError::NoError) {

//沒(méi)有出錯(cuò)

if (doc.isNull() || doc.isEmpty()) {

qDebug() << "doc is null or doc is empty";

return "";

}

if (doc.isObject()) {

QJsonObject rootObj = doc.object();

QJsonValue titleValue = rootObj.value(title);

if (titleValue.type() == QJsonValue::Object) {

QJsonObject titleObj = titleValue.toObject();

QStringList list = titleObj.keys();

for (int i=0;i

QString keyTemp = list.at(i);

if (keyTemp == key) {

return titleObj.value(key).toString();

}

}

}

}

} else {

qDebug() << "err = " << err.errorString();

}

柚子快報(bào)激活碼778899分享:c++ qt Json文件操作

http://yzkb.51969.com/

相關(guān)閱讀

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19196689.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄