C語言中處理JSON數據時,我們通常需要對JSON字符串進行解析,獲取其中某個鍵對應的值。下面我們看看如何在C語言中取出JSON數據的值。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jansson.h>
int main()
{
char* json_string = "{\"name\":\"Tom\",\"age\":18,\"gender\":\"male\"}"; // 聲明JSON字符串
json_t* root;
json_error_t error;
root = json_loads(json_string, JSON_DISABLE_EOF_CHECK, &error); // 將JSON字符串解析為json_t類型的對象
if(NULL == root) // 解析出錯
{
printf("parse error: on line %d: %s\n", error.line, error.text);
return -1;
}
json_t* name = json_object_get(root, "name"); // 獲取"name"對應的值
if(NULL != name) // 存在"name"鍵
{
printf("name: %s\n", json_string_value(name)); // 輸出"name"對應的值
}
json_t* age = json_object_get(root, "age"); // 獲取"age"對應的值
if(NULL != age) // 存在"age"鍵
{
printf("age: %d\n", json_integer_value(age)); // 輸出"age"對應的值
}
json_t* gender = json_object_get(root, "gender"); // 獲取"gender"對應的值
if(NULL != gender) // 存在"gender"鍵
{
printf("gender: %s\n", json_string_value(gender)); // 輸出"gender"對應的值
}
json_decref(root); // 釋放json_t類型對象內存
return 0;
}
代碼使用了jansson庫,該庫是一個C語言實現的JSON庫,可以方便地解析JSON數據。
通過json_object_get函數,我們可以很方便地獲取JSON對象中某個鍵對應的值,并通過json_string_value或json_integer_value等函數獲取對應的字符串或整數值。