cJSON 更新鍵值及物件

2021-10-21 02:44:45 字數 2567 閱讀 9266

使用cjson過程中,有的時候只需要更新整個json物件中的部分資料,cjson中提供了這樣的介面,針對以下兩個介面,給出使用示例。

cjson_public

(void

)cjson_replaceiteminarray

(cjson *array,

int which, cjson *newitem)

;cjson_public

(void

)cjson_replaceiteminobject

(cjson *object,

const

char

*string,cjson *newitem)

;

資料示例

源資料:

,"type": "int"

}

更新後資料:

,"type": "char"

}

一共兩個資料型別的更新,乙個是針對鍵值對的更新,比如把type的值由int改為char。另乙個是針對json物件的更新,如message節點中,整個大括號裡面所有資料的更新。**如下:

int

my_updatejsondata

(char

* string)

intmain()

,\"type\":\"int\"}"

;my_updatejsondata

(abybuf)

;return nrtn;

}

要注意,針對鍵值對的更新中,第三個引數不能直接以字串或者數字賦值,必須呼叫cjson的介面,生成物件資料。

cjson_replaceiteminobject(str_root, "type", cjson_createstring("char"));

對應介面如下:

cjson_public

(cjson *

)cjson_createnull

(void);

cjson_public

(cjson *

)cjson_createtrue

(void);

cjson_public

(cjson *

)cjson_createfalse

(void);

cjson_public

(cjson *

)cjson_createbool

(cjson_bool boolean)

;cjson_public

(cjson *

)cjson_createnumber

(double num)

;cjson_public

(cjson *

)cjson_createstring

(const

char

*string)

;資料示例

修改陣列中元素,因為陣列中的元素可能有多種,其他型別應該也是類似的。**如下:

int

my_updatejsonarrdata

(char

* string)

;//新建乙個json陣列,每個元素是int型資料,整個陣列是乙個json物件

cjson * arrnum =

cjson_createintarray

(annum,4)

; cjson * dataarr =

cjson_getobjectitem

(str_root,

"dataarr");

//更新dataarr第1元素

cjson_replaceiteminarray

(dataarr,

1, arrnum)

; cjson_str =

cjson_print

(str_root)

;printf

("replace:\n%s\n"

, cjson_str)

;free

(cjson_str)

;cjson_delete

(str_root)

;return0;

}int

main()

";my_updatejsonarrdata

(abybuf)

;return nrtn;

}

用到的介面是

cjson_replaceiteminarray

(cjson *array,

int which, cjson *newitem)

;

array: 要更改的外層陣列

which: 陣列的索引

newitem:新的元素物件

cJSON介紹及使用demo

cjson demo1 demo2 cjson是乙個超輕巧,攜帶方便,單檔案,簡單的可以作為ansi c標準的json解析器。使用時,只需要包含cjson.h和cjson.c兩個檔案即可。include cjson.h include include 建立乙個json物件 void test01 c...

Linux下cJSON編譯及示例

make all make prefix home renzhong cjson master install prefix這個引數是設定安裝路徑,這裡它只會安裝動態庫,靜態庫在原始碼包的目錄下能找到。經過這一步之後就會在安裝路徑下找到include和lib。只需將cjson.h 和cjson.c ...

物件導向 鍵值編碼 KVC 與鍵值監聽 KVO

最基本的kvc由nskeyvaluecoding協議提供支援,最基本的操作屬性的兩個方法如下 setvalue 屬性值forkey 屬性名 為指定屬性設定值。valueforkey 屬性名 獲取指定屬性值 在kvc程式設計方式中,無論呼叫setvalue forkey 方法,還是呼叫valuefor...