在進行C語言開發的時候,我們經常需要進行一些數據的轉換和處理。對于JSON格式的數據,我們通常需要將其處理成為我們需要的格式,例如List或者Array。下面將介紹如何通過C語言將JSON字符串轉換為List。
#include <stdlib.h>
#include <string.h>
#include <jansson.h>
typedef struct list_node {
void *data;
struct list_node *next;
} list_node_t;
typedef struct list {
list_node_t *head;
int size;
} list_t;
// 創建一個List,返回一個指向List的指針
list_t *create_list() {
list_t *list = (list_t *)malloc(sizeof(list_t));
list->head = NULL;
list->size = 0;
return list;
}
// 向List中添加一個元素
void add(list_t *list, void *data) {
list_node_t *node = (list_node_t *)malloc(sizeof(list_node_t));
node->data = data;
node->next = list->head;
list->head = node;
list->size++;
}
// 將json數組轉換為List
list_t *json_to_list(json_t *j_array) {
list_t *list = create_list();
int i;
for (i = 0; i < json_array_size(j_array); i++) {
json_t *j_element = json_array_get(j_array, i);
add(list, j_element);
}
return list;
}
int main() {
char *json_string = "[1, 2, 3, 4]";
json_error_t error;
json_t *j = json_loads(json_string, 0, &error);
if (!j) {
return 1;
}
list_t *list = json_to_list(j);
int i;
for (i = 0; i < list->size; i++) {
json_t *j_element = (json_t *)list->head->data;
printf("%d\n", json_integer_value(j_element));
list->head = list->head->next;
}
json_decref(j);
return 0;
}
上面的代碼演示了如何通過C語言中的Json-C庫將JSON字符串轉換為List。 在這個例子中,我們首先通過json_loads()函數將JSON字符串轉換為json_t類型的對象。然后,我們再通過json_array_size()方法獲取JSON數組的長度。接著,我們遍歷JSON數組,將每個元素添加到我們創建的List中。 最后,我們通過遍歷List來獲取每一項并打印出來。
當然,這只是一個有關如何使用C語言將JSON字符串轉換為List的簡單例子。在實際開發中,您可能需要處理更復雜的JSON格式數據,或者需要將List轉換為JSON格式數據,這些都需要您了解更多的Json-C庫。
下一篇vue cli工具