在c編程中,有時候我們需要將字典數據轉換成json格式。這篇文章將會介紹如何使用c語言將字典轉換成json。
首先,需要使用下面的原型定義一個json結構體:
typedef struct json { struct json *next, *prev; struct json *child; int type; char *valuestring; int valueint; double valuedouble; } json;
接著,我們需要定義一個字典結構體,用來存儲字典中的鍵值對:
typedef struct dictEntry { void *key; void *val; struct dictEntry *prev; struct dictEntry *next; } dictEntry;
下面是將字典轉換成json的代碼:
json *dict_to_json(dictEntry *d) { json *j, *k, *v; j = cJSON_CreateObject(); while (d) { k = cJSON_CreateString((char *) d->key); switch (typeOfVal(d->val)) { case TYPE_INT: v = cJSON_CreateNumber(*(int *) d->val); break; case TYPE_DOUBLE: v = cJSON_CreateNumber(*(double *) d->val); break; case TYPE_STRING: v = cJSON_CreateString((char *) d->val); break; default: v = NULL; } cJSON_AddItemToObject(j, k->valuestring, v); d = d->next; //下一個字典項 } return j; }
代碼解釋:
- 首先,我們創建了一個json對象。
- 接著,迭代遍歷字典,先將字典的鍵轉換成字符串,并用cJSON_CreateString創建一個json鍵值對。
- 然后,根據字典值的類型,創建一個json值對象。如果值是整數,使用cJSON_CreateNumber創建一個json數字;如果是浮點數,使用cJSON_CreateNumber創建一個浮點數;如果是字符串,使用cJSON_CreateString創建一個json字符串。
- 最后,將鍵值對添加到json對象中。循環處理下一個字典項,直到所有字典項全部處理完畢。
通過上述代碼,我們就能將一個字典轉換成相應的json格式了。