在使用C語言編程處理JSON數據時,我們通常會用到將JSON字符串轉換為對象數組的操作。下面我們來介紹一下如何使用C語言實現這一功能。
#include <stdio.h> #include <stdlib.h> #include <jansson.h> int main() { const char* jsonstr = "[{\"name\":\"Tom\",\"age\":20,\"score\":85},{\"name\":\"Jerry\",\"age\":18,\"score\":92}]"; json_t* root; json_error_t error; root = json_loads(jsonstr, 0, &error); if (!root) { printf("Failed to parse JSON: %s\n", error.text); return 1; } if (!json_is_array(root)) { printf("JSON root is not an array\n"); return 1; } size_t size = json_array_size(root); for (size_t i = 0; i < size; i++) { json_t* item = json_array_get(root, i); if (!item || !json_is_object(item)) { printf("Invalid JSON item %d\n", i); continue; } const char* name = json_string_value(json_object_get(item, "name")); int age = json_integer_value(json_object_get(item, "age")); double score = json_real_value(json_object_get(item, "score")); printf("name: %s, age: %d, score: %f\n", name, age, score); } json_decref(root); return 0; }
上述代碼中,我們首先定義了一個JSON字符串變量jsonstr,然后通過json_loads函數將其轉換為json_t類型的對象root。
接著,我們判斷root是否為數組類型。如果不是,說明JSON字符串格式不正確,需要進行錯誤處理。
如果root是數組類型,則通過json_array_size函數獲取數組大小,然后使用json_array_get函數逐個獲取數組元素。
對于每個數組元素,我們首先判斷其是否為對象類型。如果不是,說明JSON字符串格式不正確,需要進行錯誤處理。
如果數組元素是對象類型,則通過json_object_get函數逐個獲取屬性值(本例中為name、age和score),并將其轉化為對應的類型(字符串、整數和浮點數)。最后將解析出的屬性值打印輸出。
以上就是將JSON字符串轉換為對象數組的C語言代碼示例。希望本文對大家有所幫助。
下一篇c將json轉換成對象