在C語(yǔ)言中,讀取文本JSON格式的數(shù)據(jù)非常普遍。JSON格式簡(jiǎn)單明了,易讀易用,因此在Web開(kāi)發(fā)中被廣泛應(yīng)用。下面我們來(lái)了解一下如何在C語(yǔ)言中讀取JSON格式文本。
#include <stdio.h> #include <stdlib.h> #include <jansson.h> int main() { json_t *root; json_error_t error; char *json_string = "{ \"name\": \"Tom\", \"age\": 18 }"; root = json_loads(json_string, 0, &error); if(!root) { printf("error:%d %s\n", error.line, error.text); return -1; } json_t *name = json_object_get(root, "name"); json_t *age = json_object_get(root, "age"); const char *name_str = json_string_value(name); int age_int = json_integer_value(age); printf("name:%s, age:%d\n", name_str, age_int); json_decref(root); return 0; }
上面的代碼展示了一個(gè)簡(jiǎn)單的讀取JSON格式文本的例子。我們使用jansson庫(kù)來(lái)解析JSON格式的數(shù)據(jù)。在代碼中,我們定義了一個(gè)json_t類型的指針root,用來(lái)指向解析完成后的JSON格式數(shù)據(jù)。
在主函數(shù)中,我們定義了一個(gè)JSON格式數(shù)據(jù)的字符串,并使用json_loads函數(shù)解析該字符串,解析完成后,root指向解析后的JSON格式數(shù)據(jù)。如果解析失敗,將會(huì)輸出錯(cuò)誤行號(hào)和錯(cuò)誤信息。
接下來(lái),我們使用json_object_get函數(shù)獲取JSON格式數(shù)據(jù)中的name和age屬性。獲取屬性后,我們使用json_string_value和json_integer_value函數(shù)獲取屬性的值,最后輸出到控制臺(tái)。
最后,別忘記使用json_decref函數(shù)釋放資源,即可完成JSON格式數(shù)據(jù)的讀取。