C string轉換為JSON數組是一個常見的操作,特別是在Web應用程序中。JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常用于Web應用程序中各種語言和框架之間的數據傳輸。在C語言中,使用char數組表示字符串,轉換為JSON數組需要一些額外的步驟。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main(){ char* jsonString = "[{\"name\":\"Tom\", \"age\":25}, {\"name\":\"Jerry\", \"age\":27}]"; json_t * jsonArray; json_error_t jsonError; jsonArray = json_loads(jsonString, 0, &jsonError); if (!jsonArray){ fprintf(stderr, "JSON parsing error %s\n", jsonError.text); return 1; } size_t index; json_t * jsonObj; printf("JSON array has %lu elements\n", json_array_size(jsonArray)); json_array_foreach(jsonArray, index, jsonObj){ printf("Element %lu: type %d\n", index, json_typeof(jsonObj)); if (json_typeof(jsonObj) == JSON_OBJECT){ const char * name; json_t * value; void * jsonObjectIter = json_object_iter(jsonObj); while(jsonObjectIter){ name = json_object_iter_key(jsonObjectIter); value = json_object_iter_value(jsonObjectIter); printf("\t%s: type %d\n", name, json_typeof(value)); if (json_typeof(value) == JSON_STRING){ printf("\t\t%s\n", json_string_value(value)); } else if (json_typeof(value) == JSON_INTEGER){ printf("\t\t%lld\n", json_integer_value(value)); } jsonObjectIter = json_object_iter_next(jsonObj, jsonObjectIter); } } } json_decref(jsonArray); return 0; }
上述代碼使用jansson庫將C語言中的字符串轉換為JSON數組,并對其進行了遍歷和解析。 首先,使用json_loads函數將字符串轉換為JSON數組。 如果解析失敗,它將返回NULL并設置jsonError結構體的text字段。接下來,使用json_array_size函數確定數組的大小。然后使用json_array_foreach遍歷數組中的每個元素,并使用json_typeof函數確定元素的類型。如果類型為JSON_OBJECT,則對其進行更深入的遍歷,獲取其屬性名稱和值,并使用json_string_value和json_integer_value等函數將其打印到控制臺上。最后,使用json_decref函數釋放jsonArray變量。
上一篇python 日期文件夾
下一篇vue圖片的更改