JSON 是一種輕量級(jí)的數(shù)據(jù)交換格式,常用于前后端數(shù)據(jù)傳輸和 API 接口的返回值。C 語(yǔ)言可以通過(guò)操作字符數(shù)組來(lái)表示 JSON 格式的數(shù)據(jù)。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_BUF_SIZE 1024 // 定義最大緩沖區(qū)大小 int main() { char json[MAX_BUF_SIZE] = "{\"name\":\"Tom\",\"age\":18}"; // JSON 字符串 char name[100], age[10]; int i, j, k; for (i = 0, j = 0, k = 0; json[i] != '\0'; i++) { // 循環(huán)遍歷 JSON 字符串 if (json[i] == ':' && json[i + 1] == '"') { // 如果遇到鍵值對(duì)中的值 j = 0; i++; while (json[i] != '"') { // 提取值 age[j++] = json[i++]; } age[j] = '\0'; // 在末尾添加字符串結(jié)束符 } else if (json[i] == '"' && json[i - 1] != '\\') { // 如果遇到鍵值對(duì)中的鍵 j = 0; // j 用來(lái)記錄當(dāng)前鍵的長(zhǎng)度 k = i + 1; // k 用來(lái)記錄當(dāng)前鍵的起始位置 while (json[k] != '"') { // 提取鍵 name[j++] = json[k++]; } name[j] = '\0'; // 在末尾添加字符串結(jié)束符 } } printf("Name: %s, Age: %s\n", name, age); // 輸出結(jié)果 return 0; }
上述代碼演示了如何通過(guò)循環(huán)遍歷 JSON 字符串,并提取鍵值對(duì)中的鍵和值。通過(guò) C 語(yǔ)言的字符串操作函數(shù),我們還可以很方便地對(duì) JSON 字符串做各種操作,例如添加、刪除、修改、格式化等。同時(shí),由于 JSON 格式的簡(jiǎn)潔、易讀,也使得 C 語(yǔ)言的 JSON 庫(kù)得到了更廣泛的應(yīng)用。