使用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...