在C語言中,有時需要從JSON(JavaScript Object Notation)中取出特定的值。以下是一種方法:
#include <stdio.h>#include <stdlib.h>#include <jansson.h>int main() { const char *json_string = "{\"name\":\"Tom\",\"age\":24,\"gender\":\"Male\"}"; json_error_t error; json_t *root = json_loads(json_string, 0, &error); // 將JSON字符串解析為JSON對象 if (!root) { // 檢查是否有解析錯誤 printf("error: on line %d: %s\n", error.line, error.text); return 1; } json_t *name = json_object_get(root, "name"); // 從JSON對象中取出名為"name"的值 const char *name_str = json_string_value(name); // 將JSON值轉換為C字符串 printf("Name: %s\n", name_str); // 從JSON對象中取出其他值的方法類似 json_t *age = json_object_get(root, "age"); int age_int = json_integer_value(age); printf("Age: %d\n", age_int); json_t *gender = json_object_get(root, "gender"); const char *gender_str = json_string_value(gender); printf("Gender: %s\n", gender_str); json_decref(root); // 釋放JSON對象占用的內存 return 0; }
上述代碼中,首先將JSON字符串解析為JSON對象,然后通過json_object_get()
函數從JSON對象中取出需要的值。取出值后,通過json_string_value()
或json_integer_value()
將JSON值轉換為C字符串或整數。
注意,在使用json_loads()
函數時,第二個參數為解析JSON字符串時使用的標志。若不需要使用標志,則將該參數設為0即可。