cjson解析庫(cjson解析數組)

本文目錄一覽:

【Lua】cjson解析null

最近遇到一個問題,在lua中使用cjson解析json中數據為null時,解析出來是一個userdata。如圖:

我們需要判斷這個值使用cjson.null。

具體的可以看看 文檔 很詳細。

cjson嵌套多少層

四五層。cjsonN是C語言寫的一個JSON解析庫程序。該程序為更好的方便用戶的使用,提高用戶的辦事效率,所以該程序是嵌套四五層的。並且該程序憑藉其極高的辦事效率受到很多用戶的喜歡青睞。

請教Qt如何解析出Json的數據

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。它基於JavaScript(Standard ECMA-262 3rd Edition – December 1999)的一個子集。 JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C、C++、C#、Java、JavaScript、Perl、Python等)。這些特性使JSON成為理想的數據交換語言。易於人閱讀和編寫,同時也易於機器解析和生成。

常用的Json庫

JsonCpp

JsonCpp是一個C++用來處理JSON數據的開發包。

網址:.

cJSON

cJSON是一個超輕巧,攜帶方便,單文件,簡單的可以作為ANSI-C標準的JSON解析器。

網址:.

QJson

QJson是一個基於Qt的開發包用來將JSON數據解析成QVariant對象,JSON的數組將被映射為QVariantList實例,而其他對象映射為QVariantMap實例。

網址:.

關於Qt中對JSON的生成與解析,Qt5以前的版本,需要去進行單獨下載、編譯,才能使用。到了Qt5,提供了專門的QJsonDocument類來讀取和寫入JSON文檔。

Qt5中JSON的生成與解析

QJsonDocument

QJsonDocument既可以從一個基於文本表示的UTF-8編碼,又可以從Qt自己的二進位格式讀取和寫入這個文件。

JSON文檔可以從它的基於文本的表示使用QJsonDocument::fromJson()轉換為QJsonDocument,用.toJSON()將其轉換迴文字。解析器非常快速和高效,將JSON轉換為二進位表示。

QJsonObject

QJsonObject類用於封裝JSON對象。

JSON對象是鍵值對,其中鍵是唯一的字元串,其值由QJsonValue代表。一個QJsonObject可以從QVariantMap轉換/被轉換。

QJsonArray

QJsonArray類用於封裝JSON數組。

一個JSON數組列表值。該列表可以通過從陣列插入和移除QJsonValue的操縱。一個QJsonArray可以從QVariantList轉換為/被轉換。

QJsonDocument有效解析後的文檔可以使用!iSNull()判斷。使用isArray()和isObject()來判斷是否包含一個數組或對象。文檔中包含的數組或對象可以使用array()或object()進行檢索,然後讀取或操縱。

示例

QJsonObject

(1)生成Json

QJsonObject json;

json.insert(“name”, QString(“Qt”));

json.insert(“version”, 5);

json.insert(“windows”, true);

QJsonDocument document;

document.setObject(json);

QByteArray byte_array = document.toJson(QJsonDocument::Compact);

QString json_str(byte_array);

結果:

json_str:{“name”: “Qt”,”version”: 5,”windows”: true}

(2)解析Json

QJsonParseError json_error;

QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, json_error);

if(json_error.error == QJsonParseError::NoError)

{

if(parse_doucment.isObject())

{

QJsonObject obj = parse_doucment.object();

if(obj.contains(“name”))

{

QJsonValue name_value = obj.take(“name”);

if(name_value.isString())

{

QString name = name_value.toString();

}

}

if(obj.contains(“version”))

{

QJsonValue version_value = obj.take(“version”);

if(version_value.isDouble())

{

int version = version_value.toVariant().toInt();

}

}

if(obj.contains(“windows”))

{

QJsonValue version_value = obj.take(“windows”);

if(version_value.isBool())

{

bool flag = version_value.toBool();

}

}

}

}

結果:

name:Qt

version:5

windows:true

QJsonArray

(1)生成Json

QJsonArray json;

json.insert(0, QString(“Qt”));

json.insert(1, QString(“version”));

json.insert(2, true);

QJsonDocument document;

document.setArray(json);

QByteArray byte_array = document.toJson(QJsonDocument::Compact);

QString json_str(byte_array);

結果:

json_str:[“Qt”,”version”,true]

(2)解析Json

QJsonParseError json_error;

QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, json_error);

if(json_error.error == QJsonParseError::NoError)

{

if(parse_doucment.isArray())

{

QJsonArray array = parse_doucment.array();

int size = array.size();

for(int i=0; i

{

QJsonValue value = array.at(i);

if(value.isString())

{

QString name = value.toString();

}

else if(value.isBool())

{

bool flag = value.toBool();

}

}

}

}

結果:

數組不同下標對應的值

0:Qt

1:version

2:true

如上,簡單介紹一下常用的JSON庫以及Qt中對JSON的生成與解析,如需更多資料請參考官方文檔,還是那句話,沒有比助手更好、更專業的資料了!

有哪些 C++ 的 JSON 庫比較好

我現在用的是cJSON這個JSON庫,在github上可以下載到,是開源的,Windows和Linux系統開發都可以用。而且是最輕量級的JSON庫,下載下來之後再解壓,只需要將裡面的cJSON.c和cJSON.h這兩個文件複製到你的項目(源碼)目錄就可以了(需要調用cJSON的那個代碼文件要加上一句#include “cJSON.h”)。使用起來也超簡單,通過閱讀cJSON.h中的函數注釋和github上面的說明你就會知道怎麼用。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/293006.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-25 18:38
下一篇 2024-12-25 18:38

相關推薦

  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python去掉數組的中括弧

    在Python中,被中括弧包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括弧。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python二維數組對齊輸出

    本文將從多個方面詳細闡述Python二維數組對齊輸出的方法與技巧。 一、格式化輸出 Python中提供了格式化輸出的方法,可以對輸出的字元串進行格式化處理。 names = [‘A…

    編程 2025-04-29
  • Java創建一個有10萬個元素的數組

    本文將從以下方面對Java創建一個有10萬個元素的數組進行詳細闡述: 一、基本介紹 Java是一種面向對象的編程語言,其強大的數組功能可以支持創建大規模的多維數組以及各種複雜的數據…

    編程 2025-04-28
  • Python數組隨機分組用法介紹

    Python數組隨機分組是一個在數據分析與處理中常用的技術,它可以將一個大的數據集分成若干組,以便於進行處理和分析。本文將從多個方面對Python數組隨機分組進行詳細的闡述,包括使…

    編程 2025-04-28
  • Python數組索引位置用法介紹

    Python是一門多用途的編程語言,它有著非常強大的數據處理能力。數組是其中一個非常重要的數據類型之一。Python支持多種方式來操作數組的索引位置,我們可以從以下幾個方面對Pyt…

    編程 2025-04-28
  • Python語言數組從大到小排序符號的用法介紹

    當我們使用Python進行編程的時候,經常需要對數組進行排序從而使數組更加有序,而數組的排序方式有很多,其中從大到小排序符號是一種常見的排序方式。本文將從多個方面對Python語言…

    編程 2025-04-28
  • Python列錶轉numpy數組

    本文將闡述Python中列表如何轉換成numpy數組。在科學計算和數據分析領域中,numpy數組扮演著重要的角色。Python與numpy的無縫結合使得數據操作更加方便和高效。因此…

    編程 2025-04-27

發表回復

登錄後才能評論