cJSON使用案例代码。
#include <stdio.h>
#include <stdlib.h>
#include "../cJson/cJSON.h"
int main() {
FILE* jsonFile = fopen("data.json", "r");
if (jsonFile) {
fseek(jsonFile, 0, SEEK_END);
int jsonFileSize = ftell(jsonFile);
fseek(jsonFile, 0, SEEK_SET);
char* jsonStr = (char*)malloc(jsonFileSize + 2);
fread(jsonStr, jsonFileSize, 1, jsonFile);
fclose(jsonFile);
cJSON* root;
root = cJSON_Parse(jsonStr);
if (root) {
cJSON* typeObj01 = cJSON_GetObjectItem(root, "type");
if (typeObj01) {
printf("type:%s\r\n", typeObj01->valuestring);
}
cJSON* crsObj = cJSON_GetObjectItem(root, "crs");
if (crsObj) {
cJSON* typeObj02 = cJSON_GetObjectItem(crsObj, "type");
if (typeObj02) {
printf("type:%s\r\n", typeObj02->valuestring);
}
cJSON* propertiesObj1 = cJSON_GetObjectItem(crsObj, "properties");
if (propertiesObj1) {
cJSON* nameObj = cJSON_GetObjectItem(propertiesObj1, "name");
if (nameObj) {
printf("name:%s\r\n", nameObj->valuestring);
}
}
}
cJSON* featuresObj = cJSON_GetObjectItem(root, "features");
if (featuresObj) {
featuresObj = featuresObj->child;
for (; featuresObj; featuresObj = featuresObj->next)
{
cJSON* typeObj03 = cJSON_GetObjectItem(featuresObj, "type");
if (typeObj03) {
printf("type:%s\r\n", typeObj03->valuestring);
}
cJSON* propertiesobj = cJSON_GetObjectItem(featuresObj, "properties");
if (propertiesobj) {
cJSON* IDObj = cJSON_GetObjectItem(propertiesobj, "ID");
cJSON* ELEVObj = cJSON_GetObjectItem(propertiesobj, "ELEV");
if (IDObj && ELEVObj){
printf("ID:%d, ELEV:%f\r\n", IDObj->valueint, ELEVObj->valuedouble);
}
}
}
}
cJSON_Delete(root);
}
free(jsonStr);
}
return 1;
}