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

c 解析json兩層方法主表明細表

江奕云1年前8瀏覽0評論

在c語言中解析json數據時,常常會遇到主表與明細表的問題,本文介紹兩種解析方法。

1. 使用第三方庫cJSON解析

cJSON *root = cJSON_Parse(json_str);
cJSON *main_table = cJSON_GetObjectItem(root, "main_table");
cJSON *detail_table = cJSON_GetObjectItem(root, "detail_table");
int main_len = cJSON_GetArraySize(main_table);
for(int i = 0; i < main_len; i++) {
cJSON *item = cJSON_GetArrayItem(main_table, i);
//解析主表數據
cJSON *detail_item = cJSON_GetObjectItem(detail_table, item->valuestring);
if(detail_item != NULL) {
int detail_len = cJSON_GetArraySize(detail_item);
for(int j = 0; j < detail_len; j++) {
cJSON *sub_item = cJSON_GetArrayItem(detail_item, j);
//解析明細表數據
}
}
}

2. 使用原生c語言解析

json_object *root = json_tokener_parse(json_str);
json_object *main_table;
json_object *detail_table;
json_object_object_get_ex(root, "main_table", &main_table);
json_object_object_get_ex(root, "detail_table", &detail_table);
int main_len = json_object_array_length(main_table);
for(int i = 0; i < main_len; i++) {
json_object *item = json_object_array_get_idx(main_table, i);
//解析主表數據
json_object *detail_item;
json_object_object_get_ex(detail_table, json_object_get_string(item), &detail_item);
if(detail_item != NULL) {
int detail_len = json_object_array_length(detail_item);
for(int j = 0; j < detail_len; j++) {
json_object *sub_item = json_object_array_get_idx(detail_item, j);
//解析明細表數據
}
}
}
json_object_put(root);

無論使用哪種方法,我們都需要注意json格式的正確性,不正確的json格式會導致解析出錯。