在C語言開發(fā)中,我們經(jīng)常需要處理JSON格式的字符串。其中包含數(shù)組的JSON字符串是我們經(jīng)常需要處理的情況之一。下面我們來談?wù)勅绾螌⒑袛?shù)組的JSON字符串轉(zhuǎn)為對(duì)象。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main() { char json_string[] = "{\"name\": \"Tom\", \"age\": 18, \"hobbies\": [\"music\", \"reading\", \"swimming\"]}"; json_t *root; json_error_t error; root = json_loads(json_string, 0, &error); if(!root) { printf("error on line %d: %s\n", error.line, error.text); return 1; } json_t *name = json_object_get(root, "name"); printf("name: %s\n", json_string_value(name)); json_t *age = json_object_get(root, "age"); printf("age: %d\n", json_integer_value(age)); json_t *hobbies = json_object_get(root, "hobbies"); size_t index; json_t *value; json_array_foreach(hobbies, index, value) { printf("hobby[%zd]: %s\n", index, json_string_value(value)); } json_decref(root); return 0; }
在本例中,我們使用了janson庫,這是一個(gè)C語言解析JSON的開源庫。代碼中的json_string是我們要解析的JSON字符串。我們使用json_loads函數(shù)將其轉(zhuǎn)為json_t類型的對(duì)象。如果轉(zhuǎn)換失敗,我們會(huì)打印錯(cuò)誤信息并退出程序。
接著,我們通過json_object_get函數(shù)獲取對(duì)象中的元素。例如,我們用json_object_get(root, "name")獲取name屬性的值,并打印出來。數(shù)字類型使用json_integer_value函數(shù)獲取,字符串類型使用json_string_value函數(shù)獲取。
最后,我們獲取數(shù)組類型的值。我們先用json_object_get(root, "hobbies")獲取hobbies屬性的值,它是一個(gè)數(shù)組類型。然后我們遍歷數(shù)組中的每一個(gè)元素,獲取其值并輸出。在遍歷數(shù)組時(shí),我們使用了json_array_foreach函數(shù),它會(huì)將數(shù)組中的每一個(gè)元素傳給回調(diào)函數(shù)。
上一篇vue前端模板倉庫
下一篇vue echart展示