{"id":13730333,"url":"https://github.com/nfrechette/sjson-cpp","last_synced_at":"2025-04-10T17:31:01.378Z","repository":{"id":22211182,"uuid":"95608120","full_name":"nfrechette/sjson-cpp","owner":"nfrechette","description":"An Simplified JSON (SJSON) C++ reader and writer","archived":false,"fork":false,"pushed_at":"2024-07-06T18:08:51.000Z","size":433,"stargazers_count":23,"open_issues_count":5,"forks_count":7,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-03-25T01:30:01.162Z","etag":null,"topics":["c-plus-plus","cpp","parse","sjson"],"latest_commit_sha":null,"homepage":"","language":"C++","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/nfrechette.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"github":["nfrechette"]}},"created_at":"2017-06-27T23:05:58.000Z","updated_at":"2025-03-13T19:06:39.000Z","dependencies_parsed_at":"2024-03-16T21:59:20.249Z","dependency_job_id":"6bfbbdfa-7c90-4d39-986f-fd47d44adf11","html_url":"https://github.com/nfrechette/sjson-cpp","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrechette%2Fsjson-cpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrechette%2Fsjson-cpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrechette%2Fsjson-cpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrechette%2Fsjson-cpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nfrechette","download_url":"https://codeload.github.com/nfrechette/sjson-cpp/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248261993,"owners_count":21074229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["c-plus-plus","cpp","parse","sjson"],"created_at":"2024-08-03T02:01:13.412Z","updated_at":"2025-04-10T17:31:01.021Z","avatar_url":"https://github.com/nfrechette.png","language":"C++","readme":"[![CLA assistant](https://cla-assistant.io/readme/badge/nfrechette/sjson-cpp)](https://cla-assistant.io/nfrechette/sjson-cpp)\n[![All Contributors](https://img.shields.io/github/all-contributors/nfrechette/sjson-cpp)](#contributors-)\n[![Build status](https://ci.appveyor.com/api/projects/status/oynd3x3d9umjaruf/branch/develop?svg=true)](https://ci.appveyor.com/project/nfrechette/sjson-cpp)\n[![Build status](https://github.com/nfrechette/sjson-cpp/workflows/build/badge.svg)](https://github.com/nfrechette/sjson-cpp/actions)\n[![Sonar Status](https://sonarcloud.io/api/project_badges/measure?project=nfrechette_sjson-cpp\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=nfrechette_sjson-cpp)\n[![GitHub (pre-)release](https://img.shields.io/github/release/nfrechette/sjson-cpp/all.svg)](https://github.com/nfrechette/sjson-cpp/releases)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/nfrechette/sjson-cpp/master/LICENSE)\n\n# sjson-cpp\n\n`sjson-cpp` is a C++ library to read and write [Simplified JSON](http://help.autodesk.com/view/Stingray/ENU/?guid=__stingray_help_managing_content_sjson_html) files.\nIt aims to be minimal, fast, and get out of the way of the programmer.\n\nBy design, the library does no memory allocations. This is in contrast to the [nflibs C parser](https://github.com/niklasfrykholm/nflibs).\n\nEverything is **100% C++11** header based for easy and trivial integration.\n\nThis parser is intended to accept only pure SJSON, and it will fail if given a JSON file, unlike the [Autodesk JS Stingray parser](https://github.com/Autodesk/sjson).\n\n## The SJSON format\n\nThe data format is described [here](http://help.autodesk.com/view/Stingray/ENU/?guid=__stingray_help_managing_content_sjson_html) in the Stingray documentation.\n\nTODO: Add a reference sjson file showing the format as a form of loose specification\n\n## Unicode support\n\nUTF-8 support is as follow:\n\n*  String values return a raw `StringView` into the SJSON buffer. It is the responsability of the caller to interpret it as ANSI or UTF-8.\n*  String values properly support escaped unicode sequences in that they are returned raw in the `StringView`.\n*  Keys do not support UTF-8, they must be ANSI.\n*  The BOM is properly skipped if present\n\nUnicode formats other than UTF-8 aren't supported.\n\n## Supported platforms\n\n*  Windows VS2015 x86 and x64\n*  Windows (VS2017 to VS2022) x86, x64, and ARM64\n*  Windows (VS2017 to VS2022) with clang x86 and x64\n*  Linux (gcc 5 to 13) x86 and x64\n*  Linux (clang 4 to 15) x86 and x64\n*  OS X (XCode 12.5, 13.2, 14.2) x64 and ARM64\n*  Android (NDK 21) ARMv7-A and ARM64\n*  iOS (Xcode 10.3, 11.7, 12.5, 13.2, 14.2) ARM64\n*  Emscripten (1.39.11) WASM\n*  MSYS2 x64\n\nThe above supported platform list is only what is tested every release but if it compiles, it should run just fine.\n\n## External dependencies\n\nThere are none! You don't need anything else to get started: everything is self contained.\nSee [here](./external) for details.\n\n## Getting up and running\n\nThis library is **100%** headers as such you just need to include them in your own project to start using it. However, if you wish to run the unit tests you will need a few things, see below.\n\n### Windows, Linux, and OS X for x86 and x64\n\n1. Install *CMake 3.2* or higher (*3.14* for Visual Studio 2019, or *3.10* on OS X with *Xcode 10*), *Python 2.7 or 3*, and the proper compiler for your platform.\n2. Execute `git submodule update --init` to get the files of external submodules (e.g. Catch2).\n3. Generate the IDE solution with: `python make.py`  \n   The solution is generated under `./build`\n4. Build the IDE solution with: `python make.py -build`\n5. Run the unit tests with: `python make.py -unit_test`\n\n### Windows ARM64\n\nFor *Windows on ARM64*, the steps are identical to *x86 and x64* but you will need *CMake 3.13 or higher* and you must provide the architecture on the command line: `python make.py -compiler vs2017 -cpu arm64`\n\n### Android\n\nFor *Android*, the steps are identical to *Windows, Linux, and OS X* but you also need to install *Android NDK 21* (or higher). The build uses `gradle` and `-unit_test` will deploy and run on the device when executed (make sure that the `adb` executable is in your `PATH` for this to work).\n\n*Android Studio v3.5* can be used to launch and debug. After running *CMake* to build and generate everything, the *Android Studio* projects can be found under the `./build` directory.\n\n### iOS\n\nFor *iOS*, the steps are identical to the other platforms but due to code signing, you will need to perform the builds from *Xcode* manually. Note that this is only an issue if you attempt to use the tools or run the unit tests locally.\n\n### Emscripten\n\nEmscripten support currently only has been tested on OS X and Linux. To use it, make sure to install a recent version of Emscripten SDK 1.39.11+.\n\n## Commit message format\n\nThis library uses the [angular.js message format](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#commits) and it is enforced with commit linting through every pull request.\n\n## Authors\n\n*  [Nicholas Frechette](https://github.com/nfrechette)\n*  [Cody Jones](https://github.com/CodyDWJones)\n\n## License, copyright, and code of conduct\n\nThis project uses the [MIT license](LICENSE).\n\nCopyright (c) 2017 Nicholas Frechette, Cody Jones, and sjson-cpp contributors\n\nPlease note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/CodyDWJones\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/28773740?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCodyDWJones\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/sjson-cpp/commits?author=CodyDWJones\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-CodyDWJones\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/janisozaur\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/550290?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMichał Janiszewski\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/sjson-cpp/commits?author=janisozaur\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-janisozaur\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/tirpidz\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/9991876?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMartin Turcotte\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#maintenance-tirpidz\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Meradrin\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7066278?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMeradrin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/sjson-cpp/issues?q=author%3AMeradrin\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","funding_links":["https://github.com/sponsors/nfrechette"],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfrechette%2Fsjson-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnfrechette%2Fsjson-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfrechette%2Fsjson-cpp/lists"}