色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c Json轉化類

呂致盈2年前8瀏覽0評論

在C語言中,使用Json格式進行數據傳輸和存儲已經變得十分普遍。為了更方便地進行json數據的轉化和操作,可以使用專門的Json轉化類。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>
/* json類型 */
typedef enum {
JSON_NULL,
JSON_BOOLEAN,
JSON_NUMBER,
JSON_STRING,
JSON_ARRAY,
JSON_OBJECT
} json_type;
/* json值 */
typedef struct json_value json_value;
struct json_value {
json_type type;     /* json類型 */
union {
bool boolean;   /* bool值 */
double number;  /* 數字 */
struct {        /* 字符串 */
char* string;
size_t length;
} string;
struct {        /* 數組 */
json_value* element;
size_t size;
} array;
struct {        /* 對象 */
char** keys;
json_value* values;
size_t size;
} object;
} u;
};
/* json錯誤 */
enum {
JSON_PARSE_OK = 0,
JSON_PARSE_EXPECT_VALUE, /* 解析至少需要一個值 */
JSON_PARSE_INVALID_VALUE,   /* 非法的值 */
JSON_PARSE_ROOT_NOT_SINGULAR,   /* 單個值之后還有其他字符 */
JSON_PARSE_NUMBER_TOO_BIG   /* 數字太大 */
};
/* 解析json字符串 */
int json_parse(json_value* v, const char* json);
/* 獲取json類型 */
json_type json_get_type(const json_value* v);
/* 判斷值是否為null */
bool json_is_null(const json_value* v);
/* 獲取bool值 */
int json_get_boolean(const json_value* v);
/* 獲取數字 */
double json_get_number(const json_value* v);
/* 獲取字符串 */
const char* json_get_string(const json_value* v);
/* 獲取字符串長度 */
size_t json_get_string_length(const json_value* v);
/* 獲取數組長度 */
size_t json_get_array_size(const json_value* v);
/* 獲取數組元素 */
json_value* json_get_array_element(const json_value* v, size_t index);
/* 獲取對象大小 */
size_t json_get_object_size(const json_value* v);
/* 獲取對象鍵 */
const char* json_get_object_key(const json_value* v, size_t index);
/* 獲取對象值 */
json_value* json_get_object_value(const json_value* v, size_t index);
/* 釋放json值 */
void json_free(json_value* v);

以上是一個簡單的Json轉化類的代碼,包括json數據類型的枚舉常量定義、json值的結構體定義、json解析函數、獲取各種類型的值的函數、以及json值的釋放函數等。需要注意的是,這個Json轉化類是比較簡單的,只支持了基本的json數據類型,對于json比較復雜的數據格式可能不太適用。