日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

QT解析 JSON 格式的数据

發(fā)布時間:2025/3/13 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT解析 JSON 格式的数据 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

QT解析 JSON 格式的數(shù)據(jù)

JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。JSON 采用完全獨立于語言的文本格式,這些特性使 JSON 成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成。

1、基礎結構

  • 名稱/值對 集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object)、記錄(record)、結構(struct)、字典(dictionary)、哈希表(hash table)、有鍵列表(keyed list),或者關聯(lián)數(shù)組 (associative array)。

  • 值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數(shù)組(array)。

  • 2、結構剖析

    JSON 語法是 JavaScript 對象表示法語法的子集。

    • 數(shù)據(jù)在名稱/值對中:如 "firstName": "John"
    • 數(shù)據(jù)由逗號分隔
    • 花括號保存對象
    • 方括號保存數(shù)組

    組成JSON的值可以為以下幾種:

    • 數(shù)字(整數(shù)或浮點數(shù))
    • 字符串(在雙引號中)
    • 邏輯值(true 或 false)
    • 數(shù)組(在方括號中)
    • 對象(在花括號中)
    • null

    3、解析JSON

    傳統(tǒng)的 JSON 解析莫過于直接使用 java 中的方法,它通過原生的 JSONObject 和 JSONArray 來解析 json數(shù)據(jù),下面我們就來解析這段 json 數(shù)據(jù)。json 數(shù)據(jù)如下:

    {"code": "200","location": [{"name": "北京","id": "101010100","lat": "39.90498","lon": "116.40528","adm2": "北京","adm1": "北京市","country": "中國","tz": "Asia/Shanghai","utcOffset": "+08:00","isDst": "0","type": "city","rank": "10","fxLink": "http://hfx.link/2ax1"},{"name": "海淀","id": "101010200","lat": "39.95607","lon": "116.31031","adm2": "北京","adm1": "北京市","country": "中國","tz": "Asia/Shanghai","utcOffset": "+08:00","isDst": "0","type": "city","rank": "15","fxLink": "http://hfx.link/2ay1"},{"name": "朝陽","id": "101010300","lat": "39.92148","lon": "116.48641","adm2": "北京","adm1": "北京市","country": "中國","tz": "Asia/Shanghai","utcOffset": "+08:00","isDst": "0","type": "city","rank": "15","fxLink": "http://hfx.link/2az1"}],"refer": {"sources": ["qweather.com"],"license": ["commercial license"]} }

    首先,能夠看到最外邊是一個大括號,我們可以直接從傳過來的 json 字符串創(chuàng)建出來 jsonObject 對象,然后可以通過它獲取 code 屬性所對應的值,代碼如下:

    // 根據(jù)解析出來的JSON,創(chuàng)建具體的 JSONObject對象 QJsonObject jsonObject = Utf8Text.object(); QString codeData = jsonObject["code"].toString();

    接下來,我們能夠看到 "location" 所對應的值為一個 JSONArray 數(shù)組。那么,我們可以將 "location" 所對應的值提取出來,然后將其轉換成 JSONArray 數(shù)組,代碼如下:

    // 將 "location" 對應的值提取出來 QJsonValue locationValue = jsonObject.value(QStringLiteral("location")); // qDebug() << locationValue; // 根據(jù) JSON 文件可知,"location"對應值的類型為數(shù)組類型 // 將其轉換為數(shù)組類型 QJsonArray locationValueArray = locationValue.toArray();

    緊接著,我們可以通過 QJsonArray::at(i) 函數(shù)獲取數(shù)組下的第 i 個元素,同時每一個元素即是一個 jsonObject對象,我們再利用 QJsonValue::toObject() 函數(shù)將每一個數(shù)組元素轉換成 Object 對象,代碼如下:

    for (int i = 0; i < locationValueArray.size(); i++) {// 通過 QJsonArray::at(i)函數(shù)獲取數(shù)組下的第i個元素QJsonValue locationArray = locationValueArray.at(i);// qDebug() << locationArray;// 通過 QJsonValue::toObject()函數(shù)將數(shù)組元素轉換成Object對象QJsonObject location = locationArray.toObject(); }

    最后,我們便可以獲取每一個對象的屬性,代碼如下:

    QString Lng = location["lon"].toString(); QString lat = location["lat"].toString();

    總結

    以上是生活随笔為你收集整理的QT解析 JSON 格式的数据的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。