欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 從json中獲取參數值

林子帆1年前8瀏覽0評論

在使用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數據處理的基礎。