C語言中,有許多時候需要從JSON格式的字符串中提取數據,這時候就需要用到JSON對象轉結構的方法。本文將介紹如何使用C語言將JSON字符串轉換為結構體。
#include <stdio.h> #include <stdlib.h> #include <jansson.h> typedef struct { int id; char name[20]; double score; } Student; int main() { // 定義JSON對象 char *json_string = "{\"id\":20210001,\"name\":\"Tom\",\"score\":89.5}"; json_t *root = NULL; // root指向根元素 json_error_t error; // 錯誤對象 root = json_loads(json_string, 0, &error); // JSON字符串解析為JSON對象 if (!root) { printf("Error in line %d: %s\n", error.line, error.text); exit(1); } // 將JSON對象轉換為結構體 Student student; student.id = json_integer_value(json_object_get(root, "id")); strcpy(student.name, json_string_value(json_object_get(root, "name"))); student.score = json_real_value(json_object_get(root, "score")); printf("ID: %d\n", student.id); printf("Name: %s\n", student.name); printf("Score: %.2f\n", student.score); json_decref(root); // 釋放內存 return 0; }
上述代碼中,我們使用jansson庫提供的json_loads函數將JSON字符串解析為JSON對象,并從中提取出相應字段的值,最后將值存儲到結構體中。注意,讀取不同數據類型的函數不同,需仔細查看jansson庫的API文檔。
使用C語言將JSON字符串轉換為結構體,可以很方便地進行數據的處理和存儲,是日常開發中十分常見的操作。