1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fcten-libjson

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 3.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 18:00 3d3aae5

libjson

libjson — это простая и высокопроизводительная C-библиотека для работы с JSON, распространяемая под лицензией LGPL.

libjson поддерживает парсинг в режиме SAX и DOM.

libjson экономно использует память. При использовании режима SAX библиотека не выделяет динамически никакой памяти. В режиме DOM при парсинге и сериализации для каждого узла выделяется всего 20 байт (в системах с 32-битной адресацией) или 32 байта (в системах с 64-битной адресацией) памяти (не считая памяти, занимаемой самими строками).

Библиотека libjson сама по себе является потокобезопасной. Однако если используется режим SAX, следует самостоятельно обеспечивать потокобезопасность передаваемых обратных вызовов.

На данный момент libjson использует рекурсивный подход для генерации и анализа JSON-текста, поэтому при слишком глубоких вложениях объектов JSON может произойти переполнение стека.

Типы данных и ограничения точности

libjson имеет ограничения на длину строк и точность чисел.

При работе на любом типе системы libjson использует переменную типа double для хранения чисел с плавающей запятой и переменную типа long long int для целых чисел при парсинге. Если входящий JSON-строка превышает эти ограничения, полученные значения могут оказаться некорректными, но libjson пока не возвращает ошибку в таких случаях.### Системы с 32-битной адресацией Длина имени (name) не должна превышать 255 байт (8 бит), а длина строки значения (value) — 65535 байт (16 бит). Если входящая JSON-строка превышает эти ограничения, происходит обрезание значений. Но libjson пока не возвращает ошибку в таких случаях.

Например, если длина имени составляет 300 байт, то она будет обрезана до 44 байт.

Системы с 64-битной адресацией

Длина имени (name) не должна превышать 262143 байта (18 бит), а длина строки значения (value) — 274877906943 байта (38 бит). Если входящая JSON-строка превышает эти ограничения, происходит обрезание значений. Но libjson пока не возвращает ошибку в таких случаях.

Компиляция

make -f nbproject/Makefile-Release.mk QMAKE= SUBPROJECTS= .build-conf

Тестирование

make -f nbproject/Makefile-Release.mk SUBPROJECTS= .build-tests-conf

Парсинг тестов

./build/Release/GNU-Linux-x86/tests/TestFiles/f1 ./tests/test.json 1 p

Тест производительности

time ./build/Release/GNU-Linux-x86/tests/TestFiles/f1 ./tests/test.json 1000000 n

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fcten-libjson.git
git@api.gitlife.ru:oschina-mirror/fcten-libjson.git
oschina-mirror
fcten-libjson
fcten-libjson
master