c語言中json對象的查找操作十分常見,而實現(xiàn)查找的方法多種多樣。其中,基于json-c庫的查找方法簡單易懂,實用性強,是我們常用的一種方法。在使用該方法之前,需要先將待查找的json對象轉(zhuǎn)化為json_object對象。
#include <json-c/json.h> char *json_str = "{\"name\":\"張三\",\"age\":20}"; struct json_object *json = json_tokener_parse(json_str);
經(jīng)過上述轉(zhuǎn)化后,我們就可以對json_object對象進行查找操作了。具體查找操作分為兩種:
一種是直接根據(jù)名字進行查找,使用json_object_object_get()函數(shù),其中第一個參數(shù)為json_object對象,第二個參數(shù)為待查找的名字:
struct json_object *name; json_object_object_get_ex(json, "name", &name);
經(jīng)過上述查找后,我們便可以得到j(luò)son_object對象中名字為“name”的值。如果查找失敗,則返回空指針。
另一種是根據(jù)下標進行查找,使用json_object_array_get_idx()函數(shù),其中第一個參數(shù)為json_object對象,第二個參數(shù)為待查找的下標:
struct json_object *array; json_object_object_get_ex(json, "list", &array); struct json_object *value; value = json_object_array_get_idx(array, 0);
上述代碼的作用是從json_object對象中名字為“l(fā)ist”的值中取出下標為0的值。
總之,基于json-c庫的查找方法雖然簡單,但功能十分實用,特別適用于解析較為復(fù)雜的json數(shù)據(jù)。