Какие-то надуманные проблемы с YAML. Не понял, каким образом проблема даты исчезла в json? Проблема сущности сотрудника? YAML и TOML удобно читать и удобно парсить, не представляю зачем в не-скриптовом языке JSON.
Я в Java почти не использую строковые, в sql тем более, они банально мне не удобны. Ведь код может быть сжат, и строковые комментарии все поломают (в sql). Автор этой библиотеки может быть тоже из каких-то соображений не применяет их.
Ну, вот мне хотелось бы услышать, какие для этого могут быть причины в С, кроме как отсутствие поддержки компилятором (поскольку компилятор, поддерживающий С99, будет поддерживать и строковые комментарии).
Было бы здорово, если бы вы придерживались общеизвестных практик:
1. Суффикс "_t" в именах типов зарезервирован для стандарта.
2. Результат вызова malloc надо всегда явно приводить к типу переменной, иначе в строгом режиме будут предупреждения.
3. Размер в malloc нужно вычислять автоматически: int *p = malloc(sizeof *p);
Вот вывод команды «cc -pedantic -std=c99 jfes.c -o jfes.o» http://paste.ubuntu.com/12904577/
Я использую библиотеку YAJL.
Там расширяемый событийный парсер. Поддерживает комментарии.
Удобное API для доступа к узлам в дереве.
Очень простое портирование.
Но главное в JSON для embedded это менеджер памяти со статистикой использования.
Потому что наступит момент когда просто может не хватить памяти для дерева и этот момент надо разрулить без сбоев.
А вариант github.com/udp/json-parser не рассматривали? ANSI C и возможность переопределения malloc/free присутствует. Из дополнительного ещё использует функцию pow (math.h), но лекго выпиливается.
Встроить JSON в Embedded? Проще простого