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

OSCHINA-MIRROR/fcten-libjson

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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 )

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

Введение

Libjson — это простая и высокопроизводительная библиотека языка C для работы с форматом JSON, выпущенная по лицензии LGPL. Развернуть Свернуть
LGPL-3.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