Qt中如何解析Json資料

2021-08-08 18:42:08 字數 1333 閱讀 5749

qt5中提供了很方便的用於解析json資料的類,主要包括qjsonvalue,qjsonarray,qjsonobject,qjsondocument等。使用這幾個類能夠很輕易在c++端建立和處理json格式的資料,或對json資料進行序列化及反序列化等。
qjsonvalue類是用於儲存所有型別的json資料,它將json資料歸為下列6種基本型別:

bool qjsonvalue::bool

double qjsonvalue::double

string qjsonvalue::string

array qjsonvalue::array

object qjsonvalue::object

null qjsonvalue::null

因此qjsonvalue可以儲存上述這6種型別的json資料,並可以轉換對應的c++類。如下示例

qjsonvalue qjsnval;

if(qjsnval.isbool())else if(qjsnval.isdouble())else if(qjsnval.isstring())else if(qjsnval.isobject())else if(qjsnval.isarray())else if(qjsnval.isnull())else if(qjsnval.isundefined())

qjsonobject類是用來解析json物件值的,其主要常用的方法有insert, value, take等

qjsonobject qjsonobj;

qjsonobj.insert("key1", "value1"); //insert方法的第二個入參是qjsonvalue型別,因此可以傳入各種基本型別的json資料

qjsonobj.insert("key2", 3.14);

qjsonobj.insert("key3", true);

//此時qjsonobj的內容是:

qstring value1 = qjsonobj.value("key1").tostring(); //value1值為"value1"

//qjsonobjec的value方法是取出json物件的某個屬性值,但不刪除該屬性,因此此時

//qjsonobj的內容仍然是:

bool value3 = qjsonobj.take("key3").tobool(); //value3值為true

//qjsonobjec的take方法是取出json物件的某個屬性值,並刪除該屬性,因此此時

//qjsonobj的內容變成了:

json巢狀json如何解析

json格式如下 使用google的gson包處理,非常簡單 發現這個問題其實挺簡單的。我的解決方法如下 先定義三個類分別為 biz,bizs 和 data,用於對應你的 json 串中的從裡到外的三個部分。biz 類中包含 id,name,add 三個屬性,bizs 中包含壹個 biz 型別的陣列...

如何解析JSON物件

情景 解析同盾返回引數 獲取同盾返回物件 jsonobject jsonobject tdservice.invokequeryreport map2 解析json物件中key為result的物件引數 jsonobject jsonobject a jsonobject.getjsonobject ...

前端開發中如何解析json資料(三)

資料三 china america spain 上述 也是json資料 的一種表現形式,而且該形式也是很常見的,最外層是乙個物件,物件中鍵對應的值是乙個陣列。陣列裡面又包含json物件。在網路請求這裡,這樣的 json 資料也是很常見的,下面我們就來看一下如何 解析這樣的json資料。首先是通過fo...