在C語言中使用JSON,我們經常需要從JSON字符串中獲取某個屬性的值。下面我們將介紹如何在C語言中獲取JSON字符串中屬性的值。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main() { const char *json_str = "{\"code\":200,\"msg\":\"success\",\"data\":{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}}"; json_error_t error; json_t *root = json_loads(json_str, 0, &error); if (!root) { fprintf(stderr, "error: json_loads\n"); return EXIT_FAILURE; } json_t *data = json_object_get(root, "data"); if (!data) { fprintf(stderr, "error: json_object_get\n"); json_decref(root); return EXIT_FAILURE; } json_t *name = json_object_get(data, "name"); if (!name) { fprintf(stderr, "error: json_object_get\n"); json_decref(root); return EXIT_FAILURE; } if (!json_is_string(name)) { fprintf(stderr, "error: json_is_string\n"); json_decref(root); return EXIT_FAILURE; } const char *value = json_string_value(name); if (!value) { fprintf(stderr, "error: json_string_value\n"); json_decref(root); return EXIT_FAILURE; } printf("name: %s\n", value); json_decref(root); return EXIT_SUCCESS; }
以上代碼會從JSON字符串中獲取"name"屬性的值,并輸出到控制臺。
首先,我們需要使用json_loads()函數將JSON字符串轉化為JSON對象。該函數的第三個參數是錯誤信息,如果轉化失敗,會返回錯誤信息并退出程序。
接下來,我們使用json_object_get()函數獲取JSON對象中的"data"屬性,并判斷是否存在。如果不存在,會返回錯誤信息并退出程序。
然后,我們使用json_object_get()函數獲取JSON對象中的"name"屬性,并判斷是否存在。如果不存在,會返回錯誤信息并退出程序。同時,我們還需要使用json_is_string()函數判斷"name"屬性的值是否為字符串類型。
最后,我們使用json_string_value()函數獲取"name"屬性的值,并將其輸出到控制臺。