C語(yǔ)言是一種廣泛使用的編程語(yǔ)言,憑借其高效性和底層控制能力,成為了眾多程序員的首選。而在開(kāi)發(fā)中,使用JSON格式來(lái)存儲(chǔ)和傳遞數(shù)據(jù)也變得十分常見(jiàn)。本文將介紹如何在C語(yǔ)言中取出JSON中的子JSON。
#include <stdio.h> #include <string.h> #include <jansson.h> int main() { char *json_string = "{\"name\": \"Tom\", \"age\": 20, \"address\": {\"city\": \"Beijing\", \"code\": \"100012\"}}"; json_t *root, *address; const char *city; root = json_loads(json_string, 0, NULL); if(!root) { fprintf(stderr, "Error: Load JSON string failed.\n"); return 1; } address = json_object_get(root, "address"); if(!address) { fprintf(stderr, "Error: Get address object failed.\n"); return 1; } city = json_string_value(json_object_get(address, "city")); if(!city) { fprintf(stderr, "Error: Get city string failed.\n"); return 1; } printf("City: %s\n", city); json_decref(root); return 0; }
上面是一個(gè)簡(jiǎn)單的例子,首先我們定義了一個(gè)JSON字符串,包含了一個(gè)name、age和address對(duì)象。我們需要從中獲得address對(duì)象中的city值。
接下來(lái),我們使用jansson庫(kù)中的json_loads函數(shù),將JSON字符串轉(zhuǎn)換為一個(gè)json_t類型的對(duì)象root。若轉(zhuǎn)換失敗,則輸出錯(cuò)誤信息并返回1。
然后,我們使用json_object_get函數(shù)獲取root對(duì)象中的address對(duì)象。如果獲取失敗則輸出錯(cuò)誤信息并返回1。
最后,我們使用json_object_get函數(shù)獲取address對(duì)象中的city字符串,如果獲取失敗則輸出錯(cuò)誤信息并返回1。否則,輸出city值。
最后不要忘記使用json_decref函數(shù)釋放JSON對(duì)象。