C語言中截取JSON數(shù)組可以通過解析JSON對象實現(xiàn),下面是一個例子:
#include <stdio.h>#include <string.h>#include <jansson.h>#define BUFFER_SIZE 1024 int main(void) { char buffer[BUFFER_SIZE]; char *json_string = "[{\"name\":\"Tom\",\"age\":20},{\"name\":\"Jerry\",\"age\":18},{\"name\":\"Mickey\",\"age\":22}]"; int index = 0; json_t *root, *people, *person, *name, *age; json_error_t error; // 解析JSON字符串 root = json_loads(json_string, 0, &error); // 找到JSON數(shù)組 people = json_array_get(root, 0); // 遍歷JSON數(shù)組 json_array_foreach(people, index, person) { // 找到數(shù)組中的姓名和年齡屬性 name = json_object_get(person, "name"); age = json_object_get(person, "age"); // 判斷姓名是否正確 if (strcmp(json_string_value(name), "Jerry") == 0) { // 找到目標(biāo)對象,輸出年齡 printf("Jerry's age is %d\n", json_integer_value(age)); break; } } // 釋放內(nèi)存 json_decref(root); return 0; }
在這個例子中,首先定義了一個JSON字符串,并且通過json_loads函數(shù)解析成了JSON對象。接下來,通過json_array_get函數(shù)找到JSON數(shù)組,并且通過json_array_foreach函數(shù)循環(huán)遍歷JSON數(shù)組的每一個元素,找到數(shù)組中的姓名和年齡屬性。最后判斷是否找到目標(biāo)對象,如果找到則輸出年齡。
需要注意的是,在使用json_loads函數(shù)解析JSON字符串時,需要聲明緩沖區(qū)的大小,以防止緩沖區(qū)溢出。
此外,還要注意JSON字符串的格式,需要符合JSON規(guī)范,否則解析會出錯。