在使用c語言進行開發過程中,經常會需要從json字符串中獲取參數值。下面是一個簡單的方法,用于從json中獲取參數值。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main() { char *json_string = "{\"name\":\"Tom\",\"age\":25}"; json_error_t error; json_t *root = json_loads(json_string, 0, &error); if (!root) { printf("Error: on line %d: %s\n", error.line, error.text); return -1; } json_t *name = NULL; name = json_object_get(root, "name"); if(!name) { printf("Error: cannot get name.\n"); return -1; } json_t *age = NULL; age = json_object_get(root, "age"); if(!age) { printf("Error: cannot get age.\n"); return -1; } const char *name_text = json_string_value(name); if(name_text == NULL) { printf("Error: cannot get name value.\n"); return -1; } else { printf("Name: %s\n", name_text); } int age_value = json_integer_value(age); if(age_value == 0 && strcmp(json_string_value(age), "0") != 0) { printf("Error: cannot get age value.\n"); return -1; } else { printf("Age: %d\n", age_value); } json_decref(name); json_decref(age); json_decref(root); return 0; }
在上面的代碼中,json字符串是用char型指針類型存儲的,并使用json_loads函數將其轉化為json_t類型的根節點root。然后使用json_object_get函數獲取name和age兩個節點。如果無法獲取到這兩個節點,那么就會返回錯誤信息。
json_string_value函數用于獲取節點的文本值,json_integer_value函數用于獲取節點的整數值。最后使用json_decref函數松開節點內存。
上述代碼可以實現從json字符串中獲取參數值的功能,可以作為c語言中json數據處理的基礎。
上一篇vue只選擇時間
下一篇python 股票均線