c語言獲取json里的數(shù)據(jù)并且格式化是很常見的操作。下面是一個(gè)簡(jiǎn)單的例子,展示如何使用c語言獲取json字符串里的信息,并且將其格式化。
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<jansson.h>int main(){ char* json_str = "{ \"name\": \"小明\", \"age\": 21, \"hobbies\": [ \"reading\", \"music\", \"sports\" ] }"; json_error_t err; json_t* json = json_loads(json_str, 0, &err); //將json字符串轉(zhuǎn)換為json_t類型的結(jié)構(gòu)體 char* name = json_string_value(json_object_get(json, "name")); //獲取名字 int age = json_integer_value(json_object_get(json, "age")); //獲取年齡 json_t* hobbies = json_object_get(json, "hobbies"); //獲取愛好 int hobbies_num = json_array_size(hobbies); //獲取愛好的數(shù)量 printf("Name: %s\n", name); printf("Age: %d\n", age); printf("Hobbies:\n"); for(int i = 0; i<hobbies_num; i++){ char* hobby = json_string_value(json_array_get(hobbies, i)); printf("- %s\n", hobby); } json_decref(json); //釋放內(nèi)存 return 0; }
在這個(gè)例子里,我們首先定義了一個(gè)json字符串,然后使用json_loads函數(shù)將其轉(zhuǎn)換為json_t類型的結(jié)構(gòu)體。我們通過json_object_get和json_array_get函數(shù)從json_t類型的結(jié)構(gòu)體里獲取我們需要的值。最后我們使用json_decref來釋放內(nèi)存。