QT中關於JSON處理的幾個類

2021-07-10 04:45:56 字數 1533 閱讀 4024

原文:

qjsonobject類封裝了乙個json物件。乙個json物件是乙個包含了許多key-value pair的列表。這裡的key都是unique string,而value都是qjsonvalue. 

乙個qjsonobject可以被轉換成乙個qvariantmap. 可以用size()來獲得key-value pair的數目。insert(),remove()分別用來插入和刪除pair. 可以用標準c++的迭代器模式(iterator pattern)來迭代其內容。

qjsonobject是乙個隱式共享的類(implicitly shared class)。只要沒有被改變過,該qjsonobject會和建立它時所基於的document共享資料。

可以將乙個qjsonobject轉換成文字格式,也可以反方向轉換,這需要利用qjsondocument. 

qjsonvalue類封裝了json中的值。json中的值有6種基本型別:

乙個value可以是以上任何一種資料型別。另外,qjsonvalue有乙個特殊的flag來表示未定義型別。可以用isundefined()來查詢該flag. 

可以用type(),或isbool(), isstring()等來查詢value的型別。類似的,可以用tobool(), tostring()等將乙個value轉換成儲存在該value內部的型別。

values在內部是嚴格的型別,和qvariant不同,這裡的value不能做隱式型別轉換。這意味著如果要轉換成一種並非儲存在value中的型別時就會返回乙個預設構造的返回值。

qjsonarray類封裝了乙個json陣列。

乙個json陣列是乙個value的列表(a list of values)。可以對該列表插入或刪除qjsonvalue. 

乙個qjsonarray可以被轉換成或轉換自乙個qvariantlist. 可以用size(), insert(), removeat()來進行操作,還可以用標準c++的迭代器模式來迭代其內容。

qjsonarray是乙個隱式共享的類。只要沒有被改變,它可以和所建立它的document共享資料。

通過qjsondocument可以將乙個qjsonarray轉換成或轉換自乙個文字形式的json. 

qjsondocument類提供了一種讀寫json文件的方法。

qjsondocument是乙個包含了完整json文件的類,並且它可以以utf-8編碼的方式和qt自身的二進位制格式這2種方式來讀寫該json文件。

使用qjsondocument::fromjson()可以將乙個json文件從文字形式轉換為qjsondocument類的例項。而tojson()可以反方向轉換為文字形式。解析器非常的快和高效,可以將json文件轉成qt使用的二進位制形式。

對所解析文件的有效性可以使用 !isnull() 進行查詢。

使用isarray()和isobject()可以分別查詢乙個文件是否包含了乙個陣列或乙個object. 使用array()或object()可以將包含在文件中的陣列或object提取出來。

使用frombinarydata()或fromrawdata()也可以從乙個二進位制形式中建立乙個qjsondocument. 

qt中關於拖曳類的理解

在 qt4精彩例項分析 中最後一章介紹了關於拖曳類的例程,但是有些不好理解。下面是我個人看完後的一些總結 首先,關於拖曳有乙個拖曳的物件,還要有乙個盛拖曳物件的容器。所以至少要有兩個類。然後,要在拖曳物件中實現兩個事件 void mousepressevent qmouseevent void mo...

Json庫中的幾個函式

import json test 1 name 1 json.dumps test 1 將字典型別轉化為字串型別 print type test 1 print type name 1 test 2 name 2 json.loads test 2 將字串型別轉化為字典型別 print type t...

關於Qt中幾個常見控制項及常用的函式

在使用qt時,現在一般都是在 設計 中拖動控制項,一般常用的有pushbutton,label,lineedit,textedit,combox等。pushbutton就很少的去設定什麼屬性,一般直接轉到槽,編寫槽函式也就是當做乙個跳板執行函式體內操作。label一般在拖控制項的時候就把需要顯示的字...