色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json格式轉對象格式

傅智翔1年前7瀏覽0評論

在C語言的開發中,我們通常會使用JSON格式來表示數據,它可以方便地將一個對象序列化成一個字符串,在網絡傳輸中傳遞數據。但是,JSON字符串不方便直接操作,我們需要將其轉換為對象格式來進行操作。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <ctype.h>
#include <jansson.h>
typedef struct {
int id;
char name[100];
bool gender;
} Person;
int main() {
const char* json_str = "{\"id\": 1, \"name\": \"Tom\", \"gender\": true}";
json_t* root = NULL;
json_error_t error;
root = json_loads(json_str, 0, &error);
if (!root) {
printf("JSON解析失敗!%s\n", error.text);
return -1;
}
Person person;
json_t* id = json_object_get(root, "id");
if (!json_is_integer(id)) {
printf("解析id失敗!\n");
return -1;
}
person.id = json_integer_value(id);
json_t* name = json_object_get(root, "name");
if (!json_is_string(name)) {
printf("解析name失??!\n");
return -1;
}
strcpy(person.name, json_string_value(name));
json_t* gender = json_object_get(root, "gender");
if (!json_is_boolean(gender)) {
printf("解析gender失敗!\n");
return -1;
}
person.gender = json_is_true(gender);
json_decref(root);
printf("Person==>%d, %s, %s\n", person.id, person.name, person.gender ? "男" : "女");
return 0;
}

在這個例子中,我們首先定義了一個Person結構體,然后使用json_loads函數將JSON字符串解析為一個json_t*類型的對象root。之后,我們通過調用json_object_get函數和json_is_XXX函數來獲取和解析JSON中的數據,并將其存儲到Person結構體中。最后,我們調用json_decref函數釋放root對象。

通過這種方法,我們可以輕松地將JSON格式轉換為C語言中的對象格式,并進行操作。在實際開發中,我們還可以通過擴展這個例子,使用循環來解析JSON數組、使用遞歸來解析嵌套的JSON對象等等。