data CREATEDATE 2023-08-25 105731 COLLECT_IP 19816820040 COLLECT_NAME 流量基线 DEVICE_IP 19816820040 DEVICE_TYPE 网络交换机 DEVICE_NAME H3C TARGET_IP192168
以下是使用cJSON库实现解析JSON数据的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
int main() {
// JSON字符串
char jsonStr[] = "{\"data\":{\"CREATEDATE\":\"2023-08-25 10:57:31\",\"COLLECT_IP\":\"198.168.200.40\",\"COLLECT_NAME\":\"流量基线\",\"DEVICE_IP\":\"198.168.200.40\",\"DEVICE_TYPE\":\"网络交换机\",\"DEVICE_NAME\":\"H3C\",\"TARGET_IP\":\"192.168.10.11\",\"TARGET_PORT\":\"1234\",\"TARGET_HOSTNAME\":\"abc\",\"SOURCE_IP\":\"192.168.10.23\",\"SOURCE_PORT\":\"2232\",\"SOURCE_HOSTNAME\":\"test\",\"COLLECT_EVENT_TIME\":\"2023-08-25 18:41:07\",\"EVENT_HAPPEN_TIME\":\"2023-08-25 18:41:07\",\"EVENT_TYPE\":\"上行流量\",\"EVENT_NAME\":\"上行流量\",\"EVENT_CONTENT\":\"上行流量=0.098,超出基准下限0.9个单位\"}}";
// 解析JSON
cJSON *root = cJSON_Parse(jsonStr);
if (root == NULL) {
printf("Failed to parse JSON: %s\n", cJSON_GetErrorPtr());
return 1;
}
// 获取data字段
cJSON *data = cJSON_GetObjectItem(root, "data");
if (data == NULL) {
printf("Failed to get data field\n");
cJSON_Delete(root);
return 1;
}
// 获取各个字段的值
char *createDate = cJSON_GetObjectItem(data, "CREATEDATE")->valuestring;
char *collectIP = cJSON_GetObjectItem(data, "COLLECT_IP")->valuestring;
char *collectName = cJSON_GetObjectItem(data, "COLLECT_NAME")->valuestring;
char *deviceIP = cJSON_GetObjectItem(data, "DEVICE_IP")->valuestring;
char *deviceType = cJSON_GetObjectItem(data, "DEVICE_TYPE")->valuestring;
char *deviceName = cJSON_GetObjectItem(data, "DEVICE_NAME")->valuestring;
char *targetIP = cJSON_GetObjectItem(data, "TARGET_IP")->valuestring;
char *targetPort = cJSON_GetObjectItem(data, "TARGET_PORT")->valuestring;
char *targetHostname = cJSON_GetObjectItem(data, "TARGET_HOSTNAME")->valuestring;
char *sourceIP = cJSON_GetObjectItem(data, "SOURCE_IP")->valuestring;
char *sourcePort = cJSON_GetObjectItem(data, "SOURCE_PORT")->valuestring;
char *sourceHostname = cJSON_GetObjectItem(data, "SOURCE_HOSTNAME")->valuestring;
char *collectEventTime = cJSON_GetObjectItem(data, "COLLECT_EVENT_TIME")->valuestring;
char *eventHappenTime = cJSON_GetObjectItem(data, "EVENT_HAPPEN_TIME")->valuestring;
char *eventType = cJSON_GetObjectItem(data, "EVENT_TYPE")->valuestring;
char *eventName = cJSON_GetObjectItem(data, "EVENT_NAME")->valuestring;
char *eventContent = cJSON_GetObjectItem(data, "EVENT_CONTENT")->valuestring;
// 打印各个字段的值
printf("CREATE DATE: %s\n", createDate);
printf("COLLECT IP: %s\n", collectIP);
printf("COLLECT NAME: %s\n", collectName);
printf("DEVICE IP: %s\n", deviceIP);
printf("DEVICE TYPE: %s\n", deviceType);
printf("DEVICE NAME: %s\n", deviceName);
printf("TARGET IP: %s\n", targetIP);
printf("TARGET PORT: %s\n", targetPort);
printf("TARGET HOSTNAME: %s\n", targetHostname);
printf("SOURCE IP: %s\n", sourceIP);
printf("SOURCE PORT: %s\n", sourcePort);
printf("SOURCE HOSTNAME: %s\n", sourceHostname);
printf("COLLECT EVENT TIME: %s\n", collectEventTime);
printf("EVENT HAPPEN TIME: %s\n", eventHappenTime);
printf("EVENT TYPE: %s\n", eventType);
printf("EVENT NAME: %s\n", eventName);
printf("EVENT CONTENT: %s\n", eventContent);
// 释放内存
cJSON_Delete(root);
return 0;
}
注意:在编译时需要链接cJSON库,可以使用gcc命令进行编译,例如:
gcc main.c cJSON.c -o main
请确保cJSON库的头文件和源文件与示例代码在同一个目录下,并将编译生成的可执行文件命名为main
原文地址: http://www.cveoy.top/t/topic/iZJe 著作权归作者所有。请勿转载和采集!