{"id":15068139,"url":"https://github.com/mickaelblet/json","last_synced_at":"2026-02-19T14:31:22.948Z","repository":{"id":40541026,"uuid":"498192786","full_name":"MickaelBlet/Json","owner":"MickaelBlet","description":"Json load and dump library","archived":false,"fork":false,"pushed_at":"2024-12-15T00:46:40.000Z","size":357,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-12T19:56:20.976Z","etag":null,"topics":["cpp","cpp98","cpp98-compatible","header-only","json"],"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/MickaelBlet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-05-31T05:03:07.000Z","updated_at":"2024-12-15T00:45:14.000Z","dependencies_parsed_at":"2023-02-09T10:45:48.896Z","dependency_job_id":"d4771857-273a-4eae-951c-ba3eb4805703","html_url":"https://github.com/MickaelBlet/Json","commit_stats":{"total_commits":44,"total_committers":1,"mean_commits":44.0,"dds":0.0,"last_synced_commit":"cc3146489d4ff3ca58b9ccb996bf9deee4ab554a"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/MickaelBlet/Json","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MickaelBlet%2FJson","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MickaelBlet%2FJson/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MickaelBlet%2FJson/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MickaelBlet%2FJson/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MickaelBlet","download_url":"https://codeload.github.com/MickaelBlet/Json/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MickaelBlet%2FJson/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279012674,"owners_count":26085159,"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","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cpp","cpp98","cpp98-compatible","header-only","json"],"created_at":"2024-09-25T01:31:22.951Z","updated_at":"2025-10-12T19:56:22.296Z","avatar_url":"https://github.com/MickaelBlet.png","language":"C++","readme":"# Json\n\nJson load and dump library  \nHeader only library at [single_include/blet/json.h](single_include/blet/json.h).  \nExamples at [docs/examples.md](docs/examples.md)\n\n## Quick start\n\n```cpp\n/*\n** load\n*/\nconst char jsonStr[] =\n    \"{\"\n    \"  \\\"hello\\\": \\\"world\\\",\"\n    \"  \\\"array\\\": [\"\n    \"    42,\"\n    \"    [ 1337 ],\"\n    \"    {\"\n    \"      \\\"key_in_array\\\": 0.42\"\n    \"    }\"\n    \"  ],\"\n    \"  \\\"null\\\": null,\"\n    \"  \\\"boolean\\\": false\"\n    \"}\";\nconst blet::Dict json = blet::json::loadString(jsonStr);\n\nstd::cout \u003c\u003c json[\"array\"][0].getNumber() \u003c\u003c '\\n';\nstd::cout \u003c\u003c json[\"array\"][1][0].getNumber() \u003c\u003c '\\n';\nstd::cout \u003c\u003c json[\"array\"][2][\"key_in_array\"].getNumber() \u003c\u003c '\\n';\nstd::cout \u003c\u003c json[\"boolean\"].getBoolean() \u003c\u003c '\\n';\nstd::cout \u003c\u003c json[\"hello\"].getString() \u003c\u003c '\\n';\nstd::cout \u003c\u003c json[\"null\"].isNull() \u003c\u003c '\\n';\n// output:\n// 42\n// 1337\n// 0.42\n// 0\n// world\n// 1\n\n/*\n** transform\n*/\nstd::vector\u003cunsigned int\u003e arraySecond = json[\"array\"][1];\nstd::cout \u003c\u003c arraySecond[0] \u003c\u003c std::endl;\n// output:\n// 1337\n\n/*\n** generate\n*/\nstd::vector\u003cdouble\u003e vDouble;\nvDouble.reserve(3);\nvDouble.push_back(0.42);\nvDouble.push_back(-0.42);\nvDouble.push_back(42);\n\nstd::map\u003cstd::string, std::string\u003e mStr;\nmStr[\"key1\"] = \"value1\";\nmStr[\"key2\"] = \"value2\";\n\nblet::Dict newJson;\nnewJson[\"foo\"] = \"bar\";\nnewJson[\"array\"][0] = \"foo\";\nnewJson[\"array\"][1] = \"bar\";\nnewJson[\"vector\"] = vDouble;\nnewJson[\"object\"][\"foo\"] = \"bar\";\nnewJson[\"map_object\"] = mStr;\nnewJson[\"boolean\"] = true;\nnewJson[\"number\"] = 24;\nnewJson[\"null\"].newNull();\nnewJson[\"json\"] = json;\n\nstd::cout \u003c\u003c blet::json::dump(newJson, 4) \u003c\u003c '\\n';\n// output:\n// {\n//     \"array\": [\n//         \"foo\",\n//         \"bar\"\n//     ],\n//     \"boolean\": true,\n//     \"foo\": \"bar\",\n//     \"json\": {\n//         \"array\": [\n//             42,\n//             [\n//                 1337\n//             ],\n//             {\n//                 \"key_in_array\": 0.42\n//             }\n//         ],\n//         \"boolean\": false,\n//         \"hello\": \"world\",\n//         \"null\": null\n//     },\n//     \"map_object\": {\n//         \"key1\": \"value1\",\n//         \"key2\": \"value2\"\n//     },\n//     \"null\": null,\n//     \"number\": 24,\n//     \"object\": {\n//         \"foo\": \"bar\"\n//     },\n//     \"vector\": [\n//         0.42,\n//         -0.42,\n//         42\n//     ]\n// }\n```\n\n## Build\n\n```bash\n# Static Release\nmkdir build; pushd build; cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 .. \u0026\u0026 make -j \u0026\u0026 make install; popd\n# Dynamic Release\nmkdir build; pushd build; cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 .. \u0026\u0026 make -j \u0026\u0026 make install; popd\n\n# Static Release C++98\nmkdir build; pushd build; cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=98 -DBUILD_SHARED_LIBS=0 .. \u0026\u0026 make -j \u0026\u0026 make install; popd\n# Dynamic Release C++98\nmkdir build; pushd build; cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=98 -DBUILD_SHARED_LIBS=1 .. \u0026\u0026 make -j \u0026\u0026 make install; popd\n\n# Install with custom directory\nmkdir build; pushd build; cmake -DCMAKE_INSTALL_PREFIX=\"YOUR_INSTALL_PATH\" .. \u0026\u0026 make -j \u0026\u0026 make install; popd\n\n# Example + Tests + Coverage\nmkdir build; pushd build; cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_EXAMPLE=1 -DBUILD_TESTING=1 -DBUILD_COVERAGE=1 -DCMAKE_CXX_STANDARD=98 .. \u0026\u0026 make -j \u0026\u0026 make test -j; popd\n```\n\n## Load Functions\n\n### loadFile\n\n```cpp\nblet::Dict loadFile(const char* filename, bool comment = false, bool additionalNext = false);\n```\nTake a path of json file and load them for create a Dict object.  \nYou can enable options `comment` and `additionnalNext` for a better parsing.  \nExample at [docs/examples.md#loadFile](docs/examples.md#loadfile).\n\n### loadStream\n\n```cpp\nblet::Dict loadStream(std::istream\u0026 stream, bool comment = false, bool additionalNext = false);\n```\n\nTake a std::istream and load them for create a Dict object.  \nYou can enable options `comment` and `additionnalNext` for a better parsing.  \nExample at [docs/examples.md#loadStream](docs/examples.md#loadstream).\n\n### loadString\n\n```cpp\nblet::Dict loadString(const std::string\u0026 str, bool comment = false, bool additionalNext = false);\n```\n\nTake a std::string and load them for create a Dict object.  \nYou can enable options `comment` and `additionnalNext` for a better parsing.  \nExample at [docs/examples.md#loadString](docs/examples.md#loadstring).\n\n### loadData\n\n```cpp\nblet::Dict loadData(const void* data, std::size_t size, bool comment = false, bool additionalNext = false);\n```\n\nTake a data and size and load them for create a Dict object.  \nYou can enable options `comment` and `additionnalNext` for a better parsing.  \nExample at [docs/examples.md#loadData](docs/examples.md#loaddata).\n\n## Dump Functions\n\n### Dump\n\n``` cpp\nvoid dump(const blet::Dict\u0026 dict, std::ostream\u0026 os, std::size_t indent = 0, char indentCharacter = ' ');\n```\n\nDump from a Dict to json format in stream.  \nYou can set the `indent` and `indentCharacter` for better formatting.  \nExample at [docs/examples.md#DumpStream](docs/examples.md#dumpstream).\n\n``` cpp\nstd::string dump(const blet::Dict\u0026 dict, std::size_t indent = 0, char indentCharacter = ' ');\n```\n\nDump from a Dict to json format in string.  \nYou can set the `indent` and `indentCharacter` for better formatting.  \nExample at [docs/examples.md#DumpStream](docs/examples.md#dumpstring).","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmickaelblet%2Fjson","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmickaelblet%2Fjson","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmickaelblet%2Fjson/lists"}