C JSON轉(zhuǎn)URL參數(shù)是一項常見的任務(wù),因為我們經(jīng)常需要將JSON數(shù)據(jù)轉(zhuǎn)換成可供Web應(yīng)用和API使用的URL參數(shù)格式。以下是一個簡單的示例:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <cJSON.h> char* json_to_url_params(cJSON* json) { cJSON* current_element = NULL; cJSON_ArrayForEach(current_element, json) { if (current_element->type == cJSON_Object) { if (strlen(params) != 0) { strcat(params, "&"); } cJSON* inner_element = NULL; cJSON_ArrayForEach(inner_element, current_element) { sprintf(buffer, "%s=%s", inner_element->string, inner_element->valuestring); strcat(params, buffer); } } else { sprintf(buffer, "%s=%s", current_element->string, current_element->valuestring); if (strlen(params) != 0) { strcat(params, "&"); } strcat(params, buffer); } } return params; } int main() { cJSON* json = cJSON_Parse("{\"id\":1,\"name\":\"John Doe\",\"email\":\"johndoe@example.com\"}"); char* url_params = json_to_url_params(json); printf("%s\n", url_params); free(url_params); cJSON_Delete(json); return 0; }
這段代碼使用了cJSON庫來解析JSON,然后將JSON數(shù)據(jù)轉(zhuǎn)換成適用于URL參數(shù)的字符串。在這個示例中,我們將JSON數(shù)據(jù)轉(zhuǎn)換為“id=1&name=John%20Doe&email=johndoe%40example.com”的URL參數(shù)字符串。
我們首先遍歷JSON數(shù)據(jù),檢查每個元素的類型。如果元素是一個對象,我們迭代其中的元素,并將其轉(zhuǎn)換為一個鍵值對字符串。如果元素是一個字符串,我們將其轉(zhuǎn)換為一個簡單的鍵值對字符串。
最后,我們將所有鍵值對字符串連接起來,并在每個子字符串之間添加一個“&”分隔符。然后,我們返回這個字符串,并將其打印到標準輸出流中。