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;
}