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

c 將json對象轉換為類對象

錢多多1年前9瀏覽0評論

在 C 語言中,我們經常會使用 JSON 格式來傳遞數據。但是 JSON 格式的數據是以字符串的形式表示的,而我們在 C 語言中使用的是類對象,因此需要將 JSON 對象轉換為類對象。在下面的代碼示例中,我們將介紹如何使用 C 語言將 JSON 對象轉換為類對象。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jansson.h>
typedef struct {
int id;
char name[128];
float score;
} Student;
void json_to_student(const char* json_str, Student* student) {
json_t* root;
json_error_t error;
root = json_loads(json_str, 0, &error);
if (!root) {
fprintf(stderr, "Error: on line %d: %s\n", error.line, error.text);
exit(1);
}
json_t* id_obj = json_object_get(root, "id");
if (id_obj) {
student->id = json_integer_value(id_obj);
}
json_t* name_obj = json_object_get(root, "name");
if (name_obj) {
strncpy(student->name, json_string_value(name_obj), 128);
}
json_t* score_obj = json_object_get(root, "score");
if (score_obj) {
student->score = json_real_value(score_obj);
}
json_decref(root);
}
int main() {
const char* json_str = "{\"id\": 1, \"name\": \"Peter\", \"score\": 80.5}";
Student student;
json_to_student(json_str, &student);
printf("id: %d\n", student.id);
printf("name: %s\n", student.name);
printf("score: %f\n", student.score);
return 0;
}

在上面的代碼中,我們首先定義了一個 Student 結構體,用于保存學生的信息。然后我們定義了一個 json_to_student 函數,用于將 JSON 對象轉換為類對象。

在 json_to_student 函數中,我們首先使用 json_loads 函數將 JSON 字符串解析成 json_t 對象。然后我們使用 json_object_get 函數分別獲取 id、name 和 score 字段的值,并將其保存到 Student 結構體對應的字段中。最后我們使用 json_decref 函數釋放 json_t 對象。

在 main 函數中,我們調用 json_to_student 函數將 JSON 字符串轉換為一個 Student 對象,并輸出其字段的值。