在当前的 Web 开发中,使用 JSON 作为数据交换格式已经是一种主流。而在 C 语言中,要想把 JSON 数据解析出来,需要使用专业的 JSON 库,例如 cJSON。
首先需要下载 cJSON 库的源码,解压并将其文件夹复制到工程目录中。以 macOS 系统为例,这里使用 gcc 编译器进行编译。
$ gcc -c cJSON.c -o cJSON.o
接下来就可以在 C 代码中引入 cJSON 库,并调用其中的函数来解析 JSON 字符串了。下面是一个简单的示例代码:
#include "cJSON.h" #include <stdio.h> void parse_json(char *json_str) { cJSON *json = cJSON_Parse(json_str); if (json == NULL) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); } else { cJSON *name = cJSON_GetObjectItem(json, "name"); cJSON *age = cJSON_GetObjectItem(json, "age"); cJSON *isMale = cJSON_GetObjectItem(json, "is_male"); printf("name: %s\n", name->valuestring); printf("age: %d\n", age->valueint); printf("is_male: %d\n", isMale->valueint); cJSON_Delete(json); } } int main() { char *json_str = "{\"name\": \"Jack\", \"age\": 18, \"is_male\": true}"; parse_json(json_str); return 0; }
上面的代码中,parse_json() 函数用来解析 JSON 字符串,其中 cJSON_Parse() 函数返回一个 cJSON 对象,用来表示解析后的 JSON 数据。而 cJSON_GetObjectItem() 函数用来获取 cJSON 对象中的某个属性值,例如这里获取了 name、age 和 is_male 三个属性的值。最后使用 cJSON_Delete() 函数释放 cJSON 对象。
以上就是 C 语言如何获取 JSON 字符串的方法。如果需要将 C 语言中的数据转化为 JSON 字符串,则需要使用 cJSON_CreateObject()、cJSON_AddStringToObject()、cJSON_AddNumberToObject() 等函数来创建 cJSON 对象,并使用 cJSON_Print() 函数将其转化为 JSON 字符串。