{"id":15990886,"url":"https://github.com/xsam/bubblejson","last_synced_at":"2025-09-12T21:11:32.967Z","repository":{"id":115781719,"uuid":"91956783","full_name":"XSAM/BubbleJSON","owner":"XSAM","description":"A lite JSON parser/generator for C++","archived":false,"fork":false,"pushed_at":"2017-06-29T11:16:28.000Z","size":74,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master_stl","last_synced_at":"2025-02-10T07:43:14.394Z","etag":null,"topics":["cpp","cpp-stl","generator","json","parser"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XSAM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2017-05-21T12:52:08.000Z","updated_at":"2024-09-07T01:30:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"ee1ff0cf-e456-41c6-a9ab-e58e69bd5688","html_url":"https://github.com/XSAM/BubbleJSON","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XSAM%2FBubbleJSON","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XSAM%2FBubbleJSON/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XSAM%2FBubbleJSON/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XSAM%2FBubbleJSON/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XSAM","download_url":"https://codeload.github.com/XSAM/BubbleJSON/tar.gz/refs/heads/master_stl","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247262765,"owners_count":20910303,"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":["cpp","cpp-stl","generator","json","parser"],"created_at":"2024-10-08T05:40:44.735Z","updated_at":"2025-04-04T23:21:29.219Z","avatar_url":"https://github.com/XSAM.png","language":"C++","readme":"# Bubble JSON\n\n[![travis build status](https://api.travis-ci.org/XSAM/BubbleJSON.svg?branch=master_stl)](https://travis-ci.org/XSAM/BubbleJSON)\n\nA lite JSON parser/generator for C++\n\n# Features\n\n- small but **complete**\n- support **Unicode**\n- provide friendly operator **[]** to access data\n- using C++ standard library. It is **cross-platform**\n\n# Installation\n\nBubbleJSON is a header-only C++ library. copy the `BubbleJSON` folder into the project or system include path. Make sure check for C++11 support.\n\nTo run test follow these steps:\n- Go to repository folder\n- `cmake .`\n- `make`\n- run `bubbleJson_test`\n\n# Example\n\nThis simple example show a way to **parse/modify/stringify** *json* with `BubbleJSON`\n\n```c++\n#include \u003ciostream\u003e\n#include \"BubbleJSON/BubbleJson.h\"\n\nusing namespace bubbleJson;\n\nint main()\n{\n    // parse char* or string type json into tuple\u003cParse\u003e\n    const char* json = \"{\\\"project\\\":\\\"BubbleJSON\\\",\\\"Compatibility\\\":\\\"C++11\\\"}\";\n    BubbleJson bubbleJson;\n\n    auto result = bubbleJson.Parse(json);\n    // parse ok, no error\n    if (std::get\u003c0\u003e(result) != ParseResult_Ok)\n        printf(\"parse error\");\n\n    // get value\n    BubbleValue* value = std::get\u003c1\u003e(result);\n    std::cout \u003c\u003c (*value)[\"project\"].GetString();\n\n    // modify value\n    (*value)[\"Compatibility\"].SetArray(2);\n    (*value)[\"Compatibility\"][0].SetString(\"cpp11\");\n    (*value)[\"Compatibility\"][1].SetString(\"all platform\");\n\n    // output stringify result, default Stringify_Type is beauty\n    // output {\"Compatibility\":[\"cpp11\",\"all platform\"],\"project\":\"BubbleJSON\"}\n    auto stringify = bubbleJson.Stringify(value, StringifyType_Minimum);\n    std::cout \u003c\u003c std::get\u003c0\u003e(stringify);\n\n    // don't forget delete value, and free stringify result\n    delete value;\n    free (std::get\u003c0\u003e(stringify));\n\n    return 0;\n}\n```\n\n# API\n\nParse or Stringify with **BubbleJson**\n```c++\nstd::tuple\u003cParseResults, BubbleValue *\u003e Parse(const char *json);\nstd::tuple\u003cParseResults, BubbleValue *\u003e Parse(const std::string json);\n// there are two stringify modes can choose, beauty and minimum\nstd::tuple\u003cchar*, size_t \u003e Stringify(BubbleValue *bubbleValue, StringifyTypes stringifyType = StringifyType_Beauty);\n```\n\nGet data with **BubbleValue**\n\n```c++\nValueTypes GetType();\nvoid SetBoolean(bool boolean);\nbool GetBoolean();\ndouble GetNumber();\nconst char* GetString();\nsize_t GetStringLength();\n\nBubbleValue* GetArrayElement(size_t index);\nsize_t GetArrayCount();\n\nsize_t GetObjectCount();\nBubbleValue * GetObjectValueWithKey(const char *key);\nBubbleValue * GetObjectValueWithKey(const std::string key);\nstd::map\u003cstd::string, BubbleValue\u003e * GetObjects();\n```\n\nSet data with **BubbleValue**\n```c++\nvoid SetNull();\nvoid SetNumber(double number);\nvoid SetString(const char* string, size_t length);\nvoid SetString(const std::string string);\n\nvoid SetArray(size_t count);\nvoid InsertArrayElementWithIndex(size_t index);\nvoid DeleteArrayElementWithIndex(size_t index);\n\nvoid SetObject();\nvoid InsertObjectElementWithKey(const char *key, const size_t keyLength);\nvoid InsertObjectElementWithKey(const std::string key);\nvoid DeleteObjectElementWithKey(const char *key, const size_t keyLength);\nvoid DeleteObjectElementWithKey(const std::string key);\n// also you can invoke GetObjects with BubbleValue\n// and set the return value whatever you want\n```\n\noperator [] with **BubbleValue**\n```c++\nBubbleValue\u0026 operator[](const size_t index);\nBubbleValue\u0026 operator[](const size_t index) const;\nBubbleValue\u0026 operator[](const int index);\nBubbleValue\u0026 operator[](const int index) const;\nBubbleValue\u0026 operator[](const char* key);\nBubbleValue\u0026 operator[](const char* key) const;\nBubbleValue\u0026 operator[](std::string key);\nBubbleValue\u0026 operator[](std::string key) const;\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxsam%2Fbubblejson","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxsam%2Fbubblejson","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxsam%2Fbubblejson/lists"}