JSON Parser с использованием c - PullRequest
1 голос
/ 29 апреля 2019

Я должен проанализировать JSON, используя код c (не lib, потому что хочу, чтобы все выглядело максимально просто) для некоторой обработки в реальном времени. Ниже необходимо проанализировать данные, которые я получу из некоторых вычислений, сгенерированных самим кодом. Пожалуйста, помогите мне.

[
{
    "Letter": 0 ,
    "Freq": 2858    
},
.
.
.
.
.
{
    "Letter" : 31,
    "Freq" : 0
}
]

Ответы [ 2 ]

3 голосов
/ 29 апреля 2019

Это две библиотеки C, которые я использовал.

  1. https://github.com/DaveGamble/cJSON: это может проанализировать вашу строку и подготовить строки json.

  2. https://github.com/zserge/jsmn: это только для анализа строк json.

Обе библиотеки хорошо документированы и имеют тестовый код.

1 голос
/ 29 апреля 2019

Кажется, что вы хотите извлечь только значение "Freq", в этом случае этого кода достаточно:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *str = "[{\"Letter\": 0 ,\"Freq\": 2858},{\"Letter\" : 31,\"Freq\" : 0}]";

int main(void)
{
    char *ptr = str;
    long value;

    while (ptr) {
        ptr = strstr(ptr, "\"Freq\"");
        if (ptr == NULL) {
            break;
        }
        ptr = strchr(ptr, ':');
        if (ptr == NULL) {
            break;
        }
        ptr++;
        value = strtol(ptr, &ptr, 10);
        if (*ptr != '}') {
            break;
        }
        ptr++;
        printf("%lu\n", value);
    }
    return 0;
}
...