c++读取json字符串
时间: 2024-01-14 10:01:19 浏览: 86
在C语言中,可以使用第三方库来读取和处理JSON字符串。其中,最为常用的库就是cJSON。
首先,我们需要引入cJSON库的头文件,并声明一个指向cJSON对象的指针来存储JSON数据:
```
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
int main() {
cJSON *json;
char *jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
// 读取JSON字符串
json = cJSON_Parse(jsonString);
// 判断JSON数据是否有效
if (json == NULL) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return 1;
}
// 从JSON对象中获取对应的值
char *name = cJSON_GetObjectItem(json, "name")->valuestring;
int age = cJSON_GetObjectItem(json, "age")->valueint;
char *city = cJSON_GetObjectItem(json, "city")->valuestring;
// 打印读取的结果
printf("Name: %s\n", name);
printf("Age: %d\n", age);
printf("City: %s\n", city);
// 释放内存
cJSON_Delete(json);
return 0;
}
```
以上代码中的`jsonString`是待读取的JSON字符串。使用`cJSON_Parse()`函数可以将字符串解析为cJSON对象。如果解析成功,我们可以通过`cJSON_GetObjectItem()`函数来获取JSON对象中各个字段的值,其参数分别为JSON对象和字段名。其中,`cJSON_GetObjectItem()`返回的是一个cJSON对象,我们可以通过不同的函数来获取其值,如`valuestring`用于获取字符串类型的值,`valueint`用于获取整数类型的值。
最后,使用`cJSON_Delete()`函数释放所分配的内存。
该代码运行后,将输出以下结果:
```
Name: John
Age: 30
City: New York
```
这样就完成了对JSON字符串的读取。
阅读全文