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

c語言+實現json數據結構

夏志豪2年前8瀏覽0評論

C語言一直以來都是一種非常受歡迎的編程語言,其簡單易學、高效、靈活的特點使其被廣泛用于軟件和系統開發之中。在實際開發過程中,很多時候需要處理數據結構以及數據之間的傳遞,而JSON數據結構則是目前最受歡迎的一種結構化數據傳輸格式。本文將介紹如何在C語言中實現JSON數據結構。

#include#include#include#include//定義JSON數據類型
typedef enum {
JSON_STRING,
JSON_NUMBER,
JSON_OBJECT,
JSON_ARRAY,
JSON_TRUE,
JSON_FALSE,
JSON_NULL
} json_type;
//定義JSON的數據結構
typedef struct {
json_type type;
union {
char* string;    //字符串類型
double number;   //數字類型
struct json* object;   //對象類型
struct json* array;    //數組類型
bool boolean;   //布爾類型
} value;
} json;
//JSON解析函數
void json_parse(json* j, const char** p) {
switch (**p) {
case 'n':   //表示空
j->type = JSON_NULL;
*p += 4;    //指針后移
break;
case 't':   //表示真
j->type = JSON_TRUE;
*p += 4;    //指針后移
break;
case 'f':   //表示假
j->type = JSON_FALSE;
*p += 5;    //指針后移
break;
case '\"':  //表示字符串
j->type = JSON_STRING;
p++;
size_t len = strcspn(*p, "\"");
char* str = (char*)malloc(len + 1);
memcpy(str, *p, len);
str[len] = '\0';
j->value.string = str;
*p += len + 1;
break;
default:    //表示數字
j->type = JSON_NUMBER;
j->value.number = strtod(*p, (char**)p);
break;
}
}
int main(void) {
char* json_string = "{ \"name\":\"Lucy\", \"age\":18, \"is_student\":true, \"score\":[78,99] }";
json j;
const char* p = json_string;
json_parse(&j, &p);
printf("Name: %s\n", j.value.string);
printf("Age: %.0f\n", j.value.number);
printf("Is student: %d\n", j.value.boolean);
printf("Score1: %.0f\n", j.value.array[0].value.number);
printf("Score2: %.0f\n", j.value.array[1].value.number);
return 0;
}

以上是一個簡單的JSON解析程序,解析一個JSON字符串并將其存入JSON結構體中。其中,包含了JSON的幾種基本數據類型的解析方法,包括字符串、數字、布爾值和空值。通過使用C語言語法中的結構體和聯合體來構建JSON數據結構,既可以很好地描述JSON數據的內部結構,又能夠對數據進行靈活的管理和操作。