基於cJson的 Qt json處理庫

2021-10-08 05:03:04 字數 2834 閱讀 9764

qt4沒有原生的庫對json處理,qt5提供了json處理庫,使用起來稍微感覺有點麻煩,特別是修改值的時候,非常不方便。cjson是乙個c語言編寫的json處理庫,已經被大量的使用,穩定性和高效性毋庸置疑,該庫只包含乙個.h 和 .cpp檔案,使用起來非常方便,但是對於習慣qt開發者來說,cjson庫需要自己管理記憶體的開闢和釋放,使用不是特別方便。

**son庫基於cjson,進行qt的封裝,解決qt原生使用不方便和cjson手動管理記憶體的問題。本專案已經在github上開源,**son,以下是標頭檔案,一看就能明白怎麼使用

主要特點

json_object json_array 可以直接解析和序列化json字串;

支援qt4、qt5,與qt的類深度結合qbytearray\ qvariant \ qstring等;

非常符合qt的使用習慣;

無需手動管理記憶體;

使用方便簡單,只需新增4個檔案到工程中即可;

採用utf-8編碼,支援中文;

//使用示例

json_object obj

obj.

insert

("double"

,12.32132);

obj.

insert

("int"

,456);

obj.

insert

("bool"

,true);

json_array array;

array.(1

);array.

(true);

array.

("string");

array.(tr

("中文亂碼"))

; array.

(12.324);

array.

(obj)

;qdebug()

<< array.

format_string()

;qdebug()

<< obj.

format_string()

<< obj.

value

("double").

todouble()

; json_object obj1(""

);qdebug()

<< obj1.

value

("key").

toint()

;

標頭檔案

ben#ifndef **son_header_20200623

#define **son_header_20200623

#include

#include

#include

#include

struct cjson;

class

json_object

;class

json_array

;class

json_attribute

;class

json_value

;//基類,實現了一些共同的方法

class

json_inte***ce

;void

create

(json_type_enum type)

; cjson *

parse_create

(qbytearray json_string)

; cjson *m_json;

qstring m_errormsg;};

class

json_value

;json_value()

;json_value

(bool b)

;json_value

(double n)

;json_value

(const qstring & s)

;json_value

(const

char

* s)

;json_value

(const json_value & other)

;json_value

(int n)

;json_value

(qint64 n)

;json_value

(const json_object &obj)

;json_value

(const json_array &a)

;bool

tobool()

const

;double

todouble()

const

;int

toint()

const

; qstring tostring()

const

; json_object toobject()

const

; json_array toarray()

const

; type_enum type()

const

;bool

is_empty()

const

;protected

: type_enum m_type;

qvariant m_value;};

class

json_object

:public json_inte***ce

;class

json_array

:public json_inte***ce

;#endif

// pugijson_h

cjson構建 cJSON的構造和解析

對於cjson的使用,我主要是用來模擬遠端伺服器端返回的乙個json型別的目錄結構,客戶端進行獲取並進行解析,把解析出來的目錄按照原本的結構顯示在本地。cjson是乙個超輕巧,攜帶方便,單檔案,簡單的可以作為ansi c標準的json解析器。cjson結構體 typedef struct cjson...

C json庫的安裝

二.解壓 1.解壓scons 3.1.0.tar.gz,進入scons 3.1.0 目錄,執行 sudo python setup.py install tar xvf scons 3.1.0.tar.gz cd scons 3.1.0 sudo python setup.py install 2....

cJSON的資料封裝

一 示例程式如下 cjson封裝 物件,陣列 包含,被包含的關係 cjson obj cjson createobject cjson subobj cjson createobject cjson additemtoobject subobj,factory cjson createstring ...