在使用C語言處理JSON數據的時候,我們可能會遇到JSON數據不對應的情況,這種情況往往會引起程序崩潰或者出現不可預知的問題。下面讓我們來看一下如何解決這種問題。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main() { char* data = "{ \"name\": \"john\", \"age\": 25 }"; json_t* root; json_error_t error; root = json_loads(data, 0, &error); if (!root) { fprintf(stderr, "error: on line %d: %s\n", error.line, error.text); return 1; } // try to get a non-existent key from the root json_t* value; value = json_object_get(root, "email"); if (!value) { fprintf(stderr, "error: key not found\n"); } else { printf("value: %s\n", json_string_value(value)); } json_decref(root); return 0; }
在這段代碼中,我們嘗試獲取JSON的一個不存在的鍵值,從而引起了錯誤。如果我們直接運行這段代碼,會得到如下的錯誤信息:
error: key not found
但是,如果我們將代碼中的字符串"data"修改為"{ \"name\": \"john\", \"age\": 25, \"email\": \"john@example.com\" }",就會發現這個錯誤不存在了,因為我們成功獲取了存在的鍵值。
因此,在處理JSON數據時,一定要保證鍵值對應,否則就會遇到與上述代碼類似的問題。