Как парсить json строку в C?

Пользователь

от sylvester , в категории: C/C++ , 2 года назад

Как парсить json строку в C?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от guillermo , 2 года назад

@sylvester 

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


Пример кода для парсинга JSON-строки с помощью cJSON:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"

int main() {
    char *json_string = "{"name":"John", "age":30, "city":"New York"}";
    cJSON *root = cJSON_Parse(json_string);

    if (root != NULL) {
        cJSON *name = cJSON_GetObjectItemCaseSensitive(root, "name");
        cJSON *age = cJSON_GetObjectItemCaseSensitive(root, "age");
        cJSON *city = cJSON_GetObjectItemCaseSensitive(root, "city");

        if (cJSON_IsString(name) && cJSON_IsNumber(age) && cJSON_IsString(city)) {
            printf("Name: %s
", name->valuestring);
            printf("Age: %d
", age->valueint);
            printf("City: %s
", city->valuestring);
        }

        cJSON_Delete(root);
    } else {
        printf("Error parsing JSON
");
    }

    return 0;
}


Этот код создает JSON-строку json_string, затем парсит ее с помощью функции cJSON_Parse() и проверяет успешность парсинга. Затем извлекает значения из JSON-объекта с помощью функции cJSON_GetObjectItemCaseSensitive() и проверяет их типы с помощью функции cJSON_IsString() или cJSON_IsNumber(). Наконец, выводит значения на экран и удаляет объект cJSON.

Пользователь

от nicola , год назад

@sylvester 

Пример выше предоставляет базовый пример парсинга JSON-строки с использованием библиотеки cJSON. Для более сложных операций с JSON, таких как обход объектов JSON, извлечение вложенных значений и динамическая обработка массивов, вам может понадобиться изучить документацию по библиотеке cJSON или использовать другие библиотеки для работы с JSON в C, такие как Jansson, json-c или js0n.