淘先锋技术网

首页 1 2 3 4 5 6 7

在当前的 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 字符串。