/
stupin
/
DiscordBot
Обзор
Документация
Войти
/
stupin
/
DiscordBot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Dev/functions/json_parser.c
80 строк
2 KB
Stupin
init
25 июн 2025, 19:42
25 июн 2025, 19:42
0f69af1
Код
Авторство
О чём код?
#include "json_parser.h" uint32_t map_size = 0; uint8_t getval(const char *key, char *value) { if (keys != NULL && values != NULL) { for (uint16_t i = 0; i < map_size; i++) { if (strcmp(keys[i], key) == 0) { strcpy(value, values[i]); return 0; } } } return 1; } uint8_t setval(const char *key, const char *value) { free(keys[map_size]); keys[map_size] = (char*)malloc(strlen(key)); strcpy(keys[map_size], key); free(key); free(values[map_size]); values[map_size] = (char*)malloc(strlen(value)); strcpy(values[map_size], value); free(value); map_size++; return map_size; } uint32_t json_parser(char path[256]) { uint32_t size = 0; const char input[1024]; FILE* f = fopen(path, "r"); if (f == NULL) { return 0; } fgets(input, 1024, f); uint8_t flag = 0; char *key, *value; for (uint16_t i = 1, line_size = 0, rec_line_size = 0; i < strlen(input); i++) { if (input[i] == ' ' || i + 1 == strlen(input)) { //strncat(line, &input[i], 1); // Append char to string rec_line_size = line_size; if (flag == 0) { rec_line_size -= 3; key = (char*)malloc(line_size); memcpy(key, &input[i - line_size + 1], rec_line_size); if (rec_line_size < 6) { for (uint16_t j = rec_line_size; j < 6; j++) { key[j] = '\0'; } } flag = 1; } else { if (input[i - 1] == ',') { rec_line_size--; } value = (char*)malloc(line_size); memcpy(value, &input[i - line_size], rec_line_size); if (rec_line_size < 6) { for (uint16_t j = rec_line_size; j < 6; j++) { value[j] = '\0'; } } //printf("{\"%s\": %s}\n", key, value); setval(key, value); size++; flag = 0; } line_size = 0; } else { line_size++; } } return size; }