Работа с JSON в языке программирования С

JSON (JavaScript Object Notation) - это легковесный формат для обмена данными. Он широко используется веб-приложениями для передачи данных с сервера на клиент, а также между различными сервисами и приложениями.

JSON представляет собой набор пар "ключ-значение", где каждый ключ представляет собой строку, а значение может быть любым из следующих типов данных: строка, число, логическое значение (true или false), null, объект или массив объектов.

Пример JSON-объекта:


{
  "name": "John Doe",
  "age": 30,
  "isStudent": true,
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA"
  },
  "phones": [
    {
      "type": "home",
      "number": "555-1111"
    },
    {
      "type": "work",
      "number": "555-2222"
    }
  ]
}

В этом примере объект представляет человека с именем John Doe, возрастом 30 лет, который является студентом, имеет адрес и два номера телефона разных типов.

Для работы с JSON-данными в языке программирования C существуют различные библиотеки. Одна из наиболее популярных - это cJSON.

Пример кода на C с использованием библиотеки cJSON для чтения JSON-данных из файла:


#include 
#include "cJSON.h"
int main(void) {
    FILE *file = fopen("data.json", "rb"); // открытие файла
    if (!file) {
        printf("Error opening file\n");
        return 1;
    }
    fseek(file, 0, SEEK_END); // перемещение к концу файла
    long size = ftell(file); // определение размера файла
    fseek(file, 0, SEEK_SET); // перемещение в начало файла
    char *buffer = (char*)malloc(size + 1); // выделение достаточного размера буфера для чтения содержимого файла
    fread(buffer, 1, size, file); // чтение данных из файла в буфер
    fclose(file);
    buffer[size] = '\0'; // завершение буфера нулевым символом для представления строки
    cJSON *root = cJSON_Parse(buffer); // парсинг JSON-строки в структуру cJSON
    if (!root) {
        printf("Error parsing JSON\n");
        free(buffer);
        return 1;
    }
    cJSON *name = cJSON_GetObjectItem(root, "name"); // получение значения свойства "name"
    if (name && name->valuestring) {
        printf("Name: %s\n", name->valuestring);
    }
    cJSON *isStudent = cJSON_GetObjectItem(root, "isStudent"); // получение значения свойства "isStudent"
    if (isStudent && cJSON_IsBool(isStudent)) {
        printf("Is student: %s\n", cJSON_IsTrue(isStudent) ? "true" : "false");
    }
    cJSON_Delete(root); // освобождение памяти, выделенной под структуру cJSON
    free(buffer); // освобождение памяти, выделенной под буфер
    return 0;
}

Этот код открывает файл с именем data.json, читает его содержимое в буфер, парсит JSON-строку в структуру cJSON и выводит значения свойств "name" и "isStudent". По завершении работы освобождает выделенную память.

Кроме чтения JSON-данных, библиотека cJSON также позволяет создавать и изменять JSON-объекты с помощью соответствующих функций. Например, для создания нового объекта можно использовать функцию cJSON_CreateObject(), для добавления нового свойства - cJSON_AddItemToObject(). Однако, подробнее об этих функциях и других возможностях библиотеки можно узнать из ее документации.

Похожие вопросы на: "json c "

String Split в C# – примеры использования
CSS :last-child Selector
Программирование с командой stdio h: учебные материалы и задания
Как преобразовать JSON в словарь Python: руководство для начинающих
AMQ - надежный и мощный инструмент для обмена сообщениями
Что такое IPA файл и как его открыть
418 ошибка - причины и решения проблемы
Как запустить Jupiter Notebook
Функция strlen в языке программирования Си
CountDownLatch: управление параллельными потоками в Java