欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c json 配置

錢諍諍2年前7瀏覽0評論

c json 配置是一種非常常見的配置文件格式,它使用 json 格式來存儲(chǔ)配置信息,具有靈活、易讀、易維護(hù)等特點(diǎn)。在 c 語言中,我們可以使用第三方庫 cJSON 來解析和生成 json 格式的配置文件。

在使用 cJSON 之前,我們需要先下載它的源碼,并將其編譯成靜態(tài)庫文件。編譯好的靜態(tài)庫文件可以鏈接到我們的項(xiàng)目中進(jìn)行使用。

$ wget https://github.com/DaveGamble/cJSON/archive/v1.7.14.tar.gz
$ tar zxvf v1.7.14.tar.gz
$ cd cJSON-1.7.14
$ mkdir build && cd build
$ cmake .. && make

編譯完成后,我們可以將生成的靜態(tài)庫文件(libcjson.a)復(fù)制到我們的項(xiàng)目中,并在編譯時(shí)鏈接。

接下來,讓我們來看一下如何使用 cJSON 來解析 json 格式的配置文件。假設(shè)我們有一個(gè)名為 config.json 的配置文件,它的內(nèi)容如下:

{
"name": "cJSON Config",
"version": "1.0.0",
"author": {
"name": "John Doe",
"email": "johndoe@example.com"
},
"database": {
"host": "localhost",
"port": 3306,
"username": "root",
"password": "password",
"database": "mydb"
}
}

我們可以使用以下代碼來解析這個(gè)配置文件:

#include#include#include#include "cJSON.h"
int main() {
char *buffer;
FILE *fp;
long length;
fp = fopen("config.json", "rb");
if (fp) {
fseek(fp, 0, SEEK_END);
length = ftell(fp);
fseek(fp, 0, SEEK_SET);
buffer = malloc(length + 1);
if (buffer) {
fread(buffer, 1, length, fp);
buffer[length] = '\0';
cJSON *root = cJSON_Parse(buffer);
if (root) {
cJSON *name = cJSON_GetObjectItem(root, "name");
cJSON *version = cJSON_GetObjectItem(root, "version");
cJSON *author = cJSON_GetObjectItem(root, "author");
cJSON *database = cJSON_GetObjectItem(root, "database");
char *name_str = cJSON_GetStringValue(name);
char *version_str = cJSON_GetStringValue(version);
char *author_str = cJSON_Print(author);
char *database_str = cJSON_Print(database);
printf("name: %s\n", name_str);
printf("version: %s\n", version_str);
printf("author: %s\n", author_str);
printf("database: %s\n", database_str);
free(name_str);
free(version_str);
free(author_str);
free(database_str);
cJSON_Delete(root);
}
free(buffer);
}
fclose(fp);
}
return 0;
}

運(yùn)行程序后,我們可以看到以下輸出結(jié)果:

name: cJSON Config
version: 1.0.0
author: {"name":"John Doe","email":"johndoe@example.com"}
database: {"host":"localhost","port":3306,"username":"root","password":"password","database":"mydb"}

在這個(gè)例子中,我們首先打開 config.json 配置文件,并將其讀入到 buffer 中。然后,我們使用 cJSON_Parse 函數(shù)將 buffer 解析成 cJSON 結(jié)構(gòu)體。接著,我們使用 cJSON_GetObjectItem 函數(shù)獲取 json 對象中的各個(gè)字段,并使用 cJSON_GetStringValue 和 cJSON_Print 函數(shù)將其轉(zhuǎn)換成字符串。

最后,我們打印出了各個(gè)字段的值,并通過 cJSON_Delete 函數(shù)釋放了 cJSON 結(jié)構(gòu)體的內(nèi)存。