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

c json數據轉化為字符串數組嗎

錢艷冰2年前7瀏覽0評論

關于C語言中的JSON數據轉化為字符串數組這一功能,在程序開發中是非常常見的需求。下面我們來了解如何實現這一操作。

#include#include#include#include#include "cJSON.h"
#define MAX_VALUE_LEN 1024
bool cJSONToArray(const cJSON *json, char *strArray[], int *index) {
if (json == NULL || strArray == NULL || index == NULL) {
return false;
}
if (cJSON_IsArray(json)) {
cJSON *arrayElem = NULL;
cJSON_ArrayForEach(arrayElem, json) {
cJSONToArray(arrayElem, strArray, index);
}
} else {
char *jsonStr = cJSON_Print(json);
if (jsonStr != NULL) {
if (*index< MAX_VALUE_LEN) {
strArray[(*index)++] = jsonStr;
} else {
free(jsonStr);
return false;
}
}
}
return true;
}
int main() {
char *jsonStr = "{\"name\":\"張三\",\"age\":24,\"hobby\":[\"跑步\",\"看書\",\"旅游\"]}";
cJSON *json = cJSON_Parse(jsonStr);
char *strArray[MAX_VALUE_LEN];
memset(strArray, 0, sizeof(strArray));
int index = 0;
if (cJSONToArray(json, strArray, &index)) {
for (int i = 0; i< index; i++) {
printf("%s\n", strArray[i]);
free(strArray[i]);
}
}
cJSON_Delete(json);
return 0;
}

代碼中使用了cJSON庫,將JSON數據解析為cJSON格式的數據。函數cJSONToArray()主要實現了將cJSON數據轉換為字符串數組的功能。該函數首先遍歷cJSON數據,判斷當前節點是否是數組,若是,則繼續遍歷數組中的元素;若不是,則將當前節點轉化為字符串,并將其存儲在字符串數組中。

在主函數中,我們先將JSON數據解析為cJSON格式,在調用cJSONToArray()函數,將cJSON格式的數據轉化為字符串數組形式,最后遍歷輸出字符串數組中的所有元素。需要注意的是,最終輸出的字符串數組中的每個元素都需要調用free()函數進行銷毀。