在json数据 "devices": [ { "id": 0, "name": "设备名称", "code": "设备编码", "status": "设备状态", "type": "设备类型", "typeName": "设备类型名称" } ]中,如何取id的值
时间: 2023-07-21 13:11:13 浏览: 87
要获取JSON数据中的"id"字段的值,可以使用CJSON库提供的函数进行解析。以下是一个示例代码片段,展示如何从JSON数据中获取"id"字段的值:
```c
// 假设jsonString是包含JSON数据的字符串
// 解析JSON数据
cJSON *root = cJSON_Parse(jsonString);
if (root == NULL) {
// 解析失败
printf("JSON解析失败\n");
return;
}
// 获取devices数组
cJSON *devicesArray = cJSON_GetObjectItem(root, "devices");
if (devicesArray == NULL || devicesArray->type != cJSON_Array) {
// devices字段不存在或不是数组类型
printf("devices字段不存在或不是数组类型\n");
cJSON_Delete(root);
return;
}
// 获取第一个设备对象
cJSON *deviceObject = cJSON_GetArrayItem(devicesArray, 0);
if (deviceObject == NULL || deviceObject->type != cJSON_Object) {
// 第一个设备对象不存在或不是对象类型
printf("第一个设备对象不存在或不是对象类型\n");
cJSON_Delete(root);
return;
}
// 获取id字段的值
cJSON *idValue = cJSON_GetObjectItem(deviceObject, "id");
if (idValue == NULL || idValue->type != cJSON_Number) {
// id字段不存在或不是数字类型
printf("id字段不存在或不是数字类型\n");
cJSON_Delete(root);
return;
}
// 输出id的值
int id = idValue->valueint;
printf("id的值为:%d\n", id);
// 释放内存
cJSON_Delete(root);
```
在上述示例代码中,我们首先解析JSON数据,然后获取"devices"字段对应的数组对象。接着,从数组中获取第一个设备对象,并获取该设备对象中"id"字段的值。最后,输出id字段的值。
需要注意的是,在使用完cJSON_Parse函数解析JSON数据后,需要调用cJSON_Delete函数释放相关的内存空间。