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

c json轉model嵌套

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

C JSON轉Model嵌套是指將JSON數據轉換為與之相對應的Model數據結構,這樣可以通過Model方便地操作數據和進行傳輸。然而,如果JSON數據結構嵌套較多,轉換起來就會比較麻煩,需要逐一解析JSON數據中的每個嵌套結構,再將其轉換為對應的Model對象。下面就是一種較為通用的C Json轉Model嵌套的方法。

// 先定義需要轉化的json數據的結構體
typedef struct student {
char *name;
int age;
float score;
struct course {
char *name;
int credit;
} c[3];
} Student;
// 再定義處理json數據的方法
void parse_student(const cJSON *student_json, Student **s) {
//解析出name字段
cJSON* name_json = cJSON_GetObjectItem(student_json,"name");
//解析出age字段
cJSON* age_json = cJSON_GetObjectItem(student_json, "age");
//解析出score字段
cJSON* score_json = cJSON_GetObjectItem(student_json, "score");
//解析出course字段
cJSON* course_json = cJSON_GetObjectItem(student_json, "course");
// 根據解析結果實例化Student結構體
*s = (Student*)malloc(sizeof(Student));
(*s)->name = name_json->valuestring;
(*s)->age = age_json->valueint;
(*s)->score = score_json->valuedouble;
// 處理course數據,循環構建course對象
int array_size = cJSON_GetArraySize(course_json);
for (int i = 0; i< array_size; i++) {
cJSON* course_i_json = cJSON_GetArrayItem(course_json,i);
char* name = cJSON_GetObjectItem(course_i_json,"name")->valuestring;
int credit = cJSON_GetObjectItem(course_i_json,"credit")->valueint;
(*s)->c[i].name = name;
(*s)->c[i].credit = credit;
}
}
// 具體使用方法
// 獲得需要處理的json數據
char *student_json_str = "{\"name\":\"小明\",\"age\":18,\"score\":99.8,\"course\":[{\"name\":\"數學\",\"credit\":5},{\"name\":\"語文\",\"credit\":4},{\"name\":\"英語\",\"credit\":3}]}";
cJSON *json = cJSON_Parse(student_json_str);
Student *s = NULL;
parse_student(json, &s);

上述代碼定義了一個Student結構體,其中包含了一個Course結構體數組。在解析JSON數據時,通過cJSON_GetObjectItem()方法逐一獲取JSON中每個字段的值,并賦值給相應的Student對象或Course對象屬性即可。具體請見代碼注釋。