C語言獲取Json中特定的值
本文介紹如何使用C語言讀取Json文件并獲取特定的值。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <jansson.h> int main(int argc, char **argv) { FILE *fp; char *input_file; char *json_string; json_t *root; json_error_t error; if (argc != 3) { fprintf(stderr, "Usage: %s <input-file> <json-object-key>\n", argv[0]); return 1; } input_file = argv[1]; fp = fopen(input_file, "r"); if (fp == NULL) { fprintf(stderr, "Failed to open %s: %s\n", input_file, strerror(errno)); return 2; } // 讀取Json文件,并將其存儲為字符串 fseek(fp, 0, SEEK_END); long file_size = ftell(fp); fseek(fp, 0, SEEK_SET); json_string = malloc(file_size + 1); fread(json_string, file_size, 1, fp); json_string[file_size] = '\0'; fclose(fp); root = json_loads(json_string, 0, &error); free(json_string); if (root == NULL) { fprintf(stderr, "Json error on line %d: %s\n", error.line, error.text); return 3; } // 獲取特定的值 json_t *value = json_object_get(root, argv[2]); if (value == NULL) { fprintf(stderr, "No such key: %s\n", argv[2]); return 4; } const char *str_value = json_string_value(value); if (str_value != NULL) { printf("%s\n", str_value); } else { printf("Unable to retrieve value\n"); } json_decref(root); return 0; }
以上代碼可以用于獲取Json對象中指定鍵的值。詳細的代碼注釋已經在代碼中添加。