0

I'm trying to read an UTF-8 JSON file with cJSON. But my code doesn't work. It keeps getting in "json data couldn't seperated" if block. I tried to get help from ChatGPT but it cant do anything. And my project's deadline is coming up soon.

Here are my codes:

C File:

#include <stdio.h> #include <stdlib.h> #include "cJSON.h" #include "cJSON.c" int main() { // JSON dosyasını aç FILE *file = fopen("data.json", "r, ccs=UTF-8"); if (!file) { fprintf(stderr, "JSON dosyası açılamadı\n"); return 1; } // JSON dosyasını oku char *json_data = NULL; fseek(file, 0, SEEK_END); long file_size = ftell(file); fseek(file, 0, SEEK_SET); json_data = (char *)malloc(file_size + 1); if (!json_data) { fprintf(stderr, "Bellek tahsis hatası\n"); fclose(file); return 1; } if (fread(json_data, 1, file_size, file) != file_size) { fprintf(stderr, "JSON dosyası okunurken hata oluştu\n"); fclose(file); free(json_data); return 1; } fclose(file); json_data[file_size] = '\0'; // JSON verisini ayrıştır cJSON *json = cJSON_Parse(json_data); if (json == NULL) { fprintf(stderr, "JSON data couldn't seperated.\n"); free(json_data); return 1; } // JSON verisini işleyin if (cJSON_IsArray(json)) { int array_size = cJSON_GetArraySize(json); for (int i = 0; i < array_size; i++) { cJSON *item = cJSON_GetArrayItem(json, i); cJSON *id = cJSON_GetObjectItem(item, "id"); cJSON *name = cJSON_GetObjectItem(item, "name"); cJSON *grades = cJSON_GetObjectItem(item, "grades"); cJSON *course = cJSON_GetObjectItem(item, "course"); printf("ID: %d\n", id->valueint); printf("Name: %s\n", name->valuestring); printf("Course: %s\n", course->valuestring); cJSON *midterm = cJSON_GetObjectItem(grades, "midterm"); cJSON *final = cJSON_GetObjectItem(grades, "final"); printf("Midterm Grade: %d\n", midterm->valueint); printf("Final Grade: %d\n", final->valueint); } } // Bellek temizleme cJSON_Delete(json); free(json_data); return 0; } 

JSON File:

[ { "id": 1, "name": "Ahmet Yılmaz", "grades": { "midterm": 75, "final": 85 }, "course": "BIL 203" }, { "id": 2, "name": "Ayşe Kaya", "grades": { "midterm": 80, "final": 88 }, "course": "BIL 203" }, { "id": 3, "name": "Mehmet Demir", "grades": { "midterm": 70, "final": 82 }, "course": "BIL 203" } ] 

My college homework is to read data and write it to a CSV file.

12
  • What is the exact error message? Does it work if you pass in a really trivial JSON file? Commented Nov 5, 2023 at 9:55
  • json is being equal to NULL. and the program ends with this block if (json == NULL) { fprintf(stderr, "JSON data couldn't seperated.\n"); free(json_data); return 1; } Commented Nov 5, 2023 at 9:59
  • 1
    Using fseek()/ftell() to get the size of a text file is wrong, especially on Windows... Commented Nov 5, 2023 at 10:01
  • What does cJSON_GetErrorPtr() return after cJSON_Parse() failure? Commented Nov 5, 2023 at 10:03
  • 1
    fopen(filename, "rb") Commented Nov 5, 2023 at 10:10

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.