在編程中常常需要處理JSON格式的數據,而C語言中沒有原生的JSON處理庫。所以我們需要使用第三方庫來處理JSON數據。在處理JSON數據時,經常會遇到對象帶參數的情況,這時候需要使用一些特殊的方法來解析。
下面是一個對象帶參數的JSON字符串:
{ "person": { "name": "Tom", "age": 28, "address": { "city": "Shanghai", "street": "Huaihai Road" } } }
我們的目標是解析出這個JSON數據,并獲取其中的值。
首先,在C語言中,我們需要使用JSON-C這個庫來解析JSON數據。
#include <stdio.h> #include <json-c/json.h> int main() { const char *json_string = "{ \"person\": { \"name\": \"Tom\", \"age\": 28, \"address\": { \"city\": \"Shanghai\", \"street\": \"Huaihai Road\" } } }"; struct json_object *json_object, *person_object, *name_object, *age_object, *address_object, *city_object, *street_object; json_object = json_tokener_parse(json_string); json_object_object_get_ex(json_object, "person", &person_object); json_object_object_get_ex(person_object, "name", &name_object); json_object_object_get_ex(person_object, "age", &age_object); json_object_object_get_ex(person_object, "address", &address_object); json_object_object_get_ex(address_object, "city", &city_object); json_object_object_get_ex(address_object, "street", &street_object); printf("name: %s\n", json_object_get_string(name_object)); printf("age: %d\n", json_object_get_int(age_object)); printf("city: %s\n", json_object_get_string(city_object)); printf("street: %s\n", json_object_get_string(street_object)); return 0; }
在這個例子中,我們首先使用json_tokener_parse函數把JSON字符串轉化為json_object的結構體對象。然后使用json_object_object_get_ex函數獲取其中的對象和參數。最后使用json_object_get_string函數和json_object_get_int函數獲取其中的值。
在處理對象帶參數的情況時,需要使用嵌套的json_object_object_get_ex函數來獲取內部的參數。
通過上述的方法,就可以解析任意復雜度的JSON數據了。
下一篇c 設置json對象