{"id":30130804,"url":"https://github.com/nixel2007/jason","last_synced_at":"2026-04-04T21:06:17.017Z","repository":{"id":309161599,"uuid":"1035334124","full_name":"nixel2007/jason","owner":"nixel2007","description":"Сериализация пользовательских классов OneScript в JSON","archived":false,"fork":false,"pushed_at":"2025-09-10T18:08:59.000Z","size":70,"stargazers_count":11,"open_issues_count":3,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-10T21:39:40.936Z","etag":null,"topics":["json","oscript","oscript-package"],"latest_commit_sha":null,"homepage":"","language":"1C Enterprise","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nixel2007.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://t.me/tribute/app?startapp=sdzj","https://t.me/tribute/app?startapp=d7Rs"],"github":"nixel2007","ko_fi":"nixel2007","patreon":"nixel2007"}},"created_at":"2025-08-10T07:03:00.000Z","updated_at":"2025-09-06T17:22:08.000Z","dependencies_parsed_at":"2025-08-10T09:20:18.488Z","dependency_job_id":"262ab24f-ec1d-4cac-a772-1a07c1ffe2d8","html_url":"https://github.com/nixel2007/jason","commit_stats":null,"previous_names":["nixel2007/jason"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/nixel2007/jason","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Fjason","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Fjason/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Fjason/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Fjason/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nixel2007","download_url":"https://codeload.github.com/nixel2007/jason/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Fjason/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29275643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T17:15:22.002Z","status":"ssl_error","status_checked_at":"2026-02-09T17:14:42.395Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["json","oscript","oscript-package"],"created_at":"2025-08-10T18:06:40.396Z","updated_at":"2026-02-09T18:32:43.459Z","avatar_url":"https://github.com/nixel2007.png","language":"1C Enterprise","funding_links":["https://t.me/tribute/app?startapp=sdzj","https://t.me/tribute/app?startapp=d7Rs","https://github.com/sponsors/nixel2007","https://ko-fi.com/nixel2007","https://patreon.com/nixel2007"],"categories":[],"sub_categories":[],"readme":"## Jason — JSON-сериализация для OneScript\n\nJason — библиотека на OneScript для сериализации и десериализации JSON.\nПоддерживает примитивы, коллекции и пользовательские классы через аннотации и рефлексию.\n\n- Пользовательские классы с поддержкой настроек сериализации через аннотации `\u0026Сериализуемое` и `\u0026Несериализуемое`\n- Типизация полей для автоматической десериализации сложных объектов\n- Коллекции: Массив, Структура, Соответствие (вложенные структуры поддерживаются)\n- Совместимость: OneScript 2.0.0-rc.8+\n\n### Установка\n\n```bash\nopm install jason\n```\n\n### Подключение и быстрый старт\n\n```bsl\n#Использовать jason\n```\n\nСериализация:\n\n```bsl\nСериализатор = Новый СериализаторJson();\nJSON = Сериализатор.Сериализовать(Значение);\n```\n\nДесериализация (в пользовательский класс):\n\n```bsl\nДесериализатор = Новый ДесериализаторJson();\nОбъект = Десериализатор.Десериализовать(СтрокаJSON, Тип(\"ИмяКласса\"));\n```\n\nДесериализация без указания типа (возвращает значение, прочитанное платформенным методом `ПрочитатьJSON`, без дополнительного преобразования):\n\n```bsl\nДесериализатор = Новый ДесериализаторJson();\nЗначение = Десериализатор.Десериализовать(\"[1, 2, {\"\"a\"\": 3}]\"); // Массив, вложенный объект как Структура (по умолчанию)\n\n// Чтобы читать нетипизированные JSON-объекты как Соответствие, используйте третий параметр:\nЗначение2 = Десериализатор.Десериализовать(\"{\"\"a\"\": 1}\", Неопределено, Истина); // Соответствие\n```\n\n### Пользовательские классы и аннотации\n\nJason использует `annotations` для управления списком полей:\n\n- `\u0026Сериализуемое` — необязательная аннотация. По умолчанию все заполненные поля объекта сериализуются. Аннотация нужна для настройки:\n\t- `Значение` — имя свойства в JSON (переименование)\n\t- `Обязательное` — включать поле в JSON даже при значении Неопределено\n- `\u0026Несериализуемое` — исключает поле из сериализации\n\nПример класса (упрощённо):\n\n```bsl\n\u0026Сериализуемое\nПерем Строка;\n\n// Поле будет включено в JSON даже без явного указания\nПерем Число;\n\u0026Несериализуемое\n\n// Поле не будет включено в JSON\nПерем Временное;\n\n\u0026Сериализуемое(\"renamed_field\")\n // Поле будет включено в JSON с именем renamed_field\nПерем Переименованное;\n\n\u0026Сериализуемое(Обязательное = Истина)\n// Поле будет включено в JSON, даже если оно не заполнено в объекте\nПерем ОбязательноеПоле;\n```\n\nИмена свойств в JSON соответствуют именам полей (если явно не переименованы аннотацией \u0026Сериализуемое). Поддерживаются кириллические имена.\n\n### Поддерживаемые типы\n\n- Примитивы: Число, Строка, Булево, Дата, Null/Неопределено\n- Коллекции: Массив, Структура, Соответствие\n- Пользовательские классы (через рефлексию и аннотации)\n\nОсобенности десериализации:\n- JSON null читается как Неопределено.\n- По умолчанию (без указания типа) JSON-объект читается как Структура.\n- Внутри массива JSON-объекты по умолчанию будут иметь тип Структура (если не задан конкретный тип элемента).\n- При передаче третьего параметра `ЧитатьВСоответствие = Истина` нетипизированные объекты читаются как Соответствие (и в корне, и внутри массивов).\n- Если явно указать тип результата, например Тип(\"Структура\"), то корневой JSON-объект будет приведён к Структуре.\n- Если тип в вызове `Десериализовать` не указан, возвращается разобранное значение без приведения типов.\n\nСигнатура метода десериализации:\n\n```bsl\nДесериализатор.Десериализовать(СтрокаJSON, ТипОбъекта = Неопределено, ЧитатьВСоответствие = Ложь)\n```\n\n### Примеры\n\nСериализация структуры:\n\n```bsl\nДанные = Новый Структура(\"Имя, Возраст\", \"Тест\", 25);\nJSON = Новый СериализаторJson().Сериализовать(Данные);\n```\n\nДесериализация в класс:\n\n```bsl\n// ТестовыйКласс.os\n\n\u0026Сериализуемое(\"number\")\nПерем Число Экспорт; \n\nПерем Строка Экспорт;\n```\n\n```bsl\nJSON = \"{\"\"Строка\"\":\"\"значение\"\",\"\"number\"\":10}\";\nОбъект = Новый ДесериализаторJson().Десериализовать(JSON, Тип(\"ТестовыйКласс\"));\n\nОжидаем.Что(Объект).ИмеетТип(\"ТестовыйКласс\");\nОжидаем.Что(Объект.Строка).Равно(\"значение\");\nОжидаем.Что(Объект.Число).Равно(10);\n```\n\nБольше примеров — в папке `tests/` (файлы `Сериализация.os`, `Десериализация.os`).\n\n### Тесты\n\nТесты на OneUnit:\n\n```bash\noneunit execute\n```\n### Лицензия\n\nЭтот проект лицензируется под лицензией MIT. Подробности см. в файле [LICENSE.md](./LICENSE.md).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnixel2007%2Fjason","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnixel2007%2Fjason","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnixel2007%2Fjason/lists"}