{"id":16287465,"url":"https://github.com/viordash/rapidjsonwrapper","last_synced_at":"2025-07-05T21:35:28.442Z","repository":{"id":51202446,"uuid":"505158872","full_name":"viordash/RapidJSONWrapper","owner":"viordash","description":"Wrap RapidJSON to be used as objects of predefined classes","archived":false,"fork":false,"pushed_at":"2023-03-19T14:13:17.000Z","size":2608,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-14T23:45:12.815Z","etag":null,"topics":["cpp-json","json-cpp","rapidjson"],"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/viordash.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}},"created_at":"2022-06-19T16:14:37.000Z","updated_at":"2022-08-21T15:46:36.000Z","dependencies_parsed_at":"2024-12-22T20:16:57.970Z","dependency_job_id":"3ee07981-0004-4f33-91ee-a7d461457c56","html_url":"https://github.com/viordash/RapidJSONWrapper","commit_stats":{"total_commits":260,"total_committers":3,"mean_commits":86.66666666666667,"dds":0.07307692307692304,"last_synced_commit":"086b9428e7d7ac069ca51d03b40bd227fce8f6d3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viordash%2FRapidJSONWrapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viordash%2FRapidJSONWrapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viordash%2FRapidJSONWrapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viordash%2FRapidJSONWrapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/viordash","download_url":"https://codeload.github.com/viordash/RapidJSONWrapper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247981969,"owners_count":21028033,"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-json","json-cpp","rapidjson"],"created_at":"2024-10-10T19:45:11.254Z","updated_at":"2025-04-09T05:22:08.573Z","avatar_url":"https://github.com/viordash.png","language":"C++","readme":"# RapidJSONWrapper\n[![CMake](https://github.com/viordash/RapidJSONWrapper/actions/workflows/cmake.yml/badge.svg?branch=master)](https://github.com/viordash/RapidJSONWrapper/actions/workflows/cmake.yml)\n\nWrap RapidJSON to be used as objects of predefined class\n\n\nObjects are represented as DTOs with json serialization/deserialization support:\n\n    \n    class UserDto : public JsonObject {\n      public:\n    \tJsonValue\u003cchar *\u003e Name;\n    \tJsonCommonValue\u003cuint32_t\u003e Role;\n    \n    \tUserDto(char *name = {}, TUserRole role = {})\n    \t\t: Name(this, \"name\", name), \n    \t\t  Role(this, \"role\", role){};\n    };\n    \n    class GoodsDto : public JsonObject {\n      public:\n    \tJsonValue\u003cint\u003e Id;\n    \tJsonValue\u003cuint32_t\u003e Created;\n    \tJsonValue\u003cchar *\u003e Group;\n    \tJsonValue\u003cchar *\u003e Name;\n    \tJsonValue\u003cfloat\u003e Price;\n    \tJsonValue\u003cdouble\u003e Quantity;\n    \tJsonCommonValue\u003cbool\u003e Deleted;\n    \tJsonCommonValue\u003cchar *\u003e StoreName;\n    \n    \tGoodsDto(int id = {}, uint32_t created = {}, char *group = {}, char *name = {}, float price = {}, double quantity = {}, bool deleted = {}, char *storeName = {})\n    \t\t: Id(this, \"Id\", id),\t\t\t\t\t\n    \t\t  Created(this, \"Created\", created),\t\n    \t\t  Group(this, \"Group\", group),\t\t\t\n    \t\t  Name(this, \"Name\", name),\t\t\t\t\n    \t\t  Price(this, \"Price\", price),\t\t\t\n    \t\t  Quantity(this, \"Quantity\", quantity), \n    \t\t  Deleted(this, \"Deleted\", deleted),\t\n    \t\t  StoreName(this, \"StoreName\", storeName){};\n    };\n        \n\tclass GoodsList : public JsonObjectsArray {\n\tpublic:\n\t\tbool Validate(JsonObject *item) override { return item-\u003eValidate(); }\n\t\tJsonObject *CreateItem() override { return new GoodsDto(); }\n\t};\n    \n    class OrderDto : public JsonObject {\n      public:\n    \tJsonValue\u003cchar *\u003e Supplier;\n    \tJsonCommonValue\u003cuint32_t\u003e DateTime;\n    \tJsonValue\u003cJsonArrayBase *\u003e Goods;\n    \tJsonValue\u003cJsonObject *\u003e User;\n    \tGoodsList goodsList;\n    \tUserDto userDto;\n    \n    \tOrderDto(char *supplier = {}, uint32_t dateTime = {}, char *userName = {}, TUserRole userRole = {})\n    \t\t: Supplier(this, \"supplier\", supplier), \n    \t\t  DateTime(this, \"dateTime\", dateTime), \n    \t\t  Goods(this, \"goods\", \u0026goodsList),\t\t\n    \t\t  userDto(userName, userRole),\t\t\t\n    \t\t  User(this, \"user\", \u0026userDto){};\n    };\n\nsample code (from tests): \n\t\n\n    TEST(JsonObjectTestsGroup, JsonObject_Complex_TryParse_Test) {\n    \t\tOrderDto order;\n    \n    \t\tCHECK(order.TryStringParse(\"{\\\"supplier\\\":\\\"Dell\\\",\\\"dateTime\\\":1657058000,\\\"goods\\\":[{\\\"Id\\\":1,\\\"Created\\\":1657052789,\\\"Group\\\":\\\"Keyboards\\\",\\\"Name\\\":\\\"K1-100\\\",\\\"Price\\\":58.\"\n    \t\t\t\t\t\t\t \"25,\\\"Quantity\\\":48.2,\\\"Deleted\\\":false,\\\"StoreName\\\":\\\"\\\"},{\\\"Id\\\":3,\\\"Created\\\":1657054789,\\\"Group\\\":\\\"Keyboards\\\",\\\"Name\\\":\\\"K3-100\\\",\\\"Price\\\":\"\n    \t\t\t\t\t\t\t \"258.25,\\\"Quantity\\\":548.2,\\\"Deleted\\\":false,\\\"StoreName\\\":\\\"\\\"},{\\\"Id\\\":4,\\\"Created\\\":1657055789,\\\"Group\\\":\\\"Keyboards\\\",\\\"Name\\\":\\\"K4-100\\\",\"\n    \t\t\t\t\t\t\t \"\\\"Price\\\":358.25,\\\"Quantity\\\":648.2,\\\"Deleted\\\":false,\\\"StoreName\\\":\\\"\\\"}],\\\"user\\\":{\\\"name\\\":\\\"Joe Doe\\\",\\\"role\\\":1}}\"));\n    \t\tCHECK_EQUAL(order.goodsList.Size(), 3);\n    \t\tCHECK_EQUAL(order.goodsList.Item\u003cGoodsDto *\u003e(0)-\u003eCreated.Value, 1657052789);\n    \t\tSTRCMP_EQUAL(order.goodsList.Item\u003cGoodsDto *\u003e(2)-\u003eName.Value, \"K4-100\");\n    \t\tSTRCMP_EQUAL(order.userDto.Name.Value, \"Joe Doe\");\n    \t}\n            \n    TEST(JsonObjectTestsGroup, JsonObject_Complex_WriteTo_Test) {\n    \tOrderDto orderDto(\"Dell\", 1657058000, \"Joe Doe\", TUserRole::uViewer);\n    \torderDto.goodsList.Add(new GoodsDto(1, 1657052789, \"Keyboards\", \"K1-100\", 58.25, 48.2));\n    \torderDto.goodsList.Add(new GoodsDto(2, 1657053789, \"Keyboards\", \"K2-100\", 158.25, 448.2));\n    \torderDto.goodsList.Add(new GoodsDto(3, 1657054789, \"Keyboards\", \"K3-100\", 258.25, 548.2));\n    \torderDto.goodsList.Add(new GoodsDto(4, 1657055789, \"Keyboards\", \"K4-100\", 358.25, 648.2));\n    \n    \trapidjson::Document doc;\n    \tdoc.SetObject();\n    \n    \torderDto.WriteToDoc(\u0026doc);\n    \n    \trapidjson::StringBuffer buffer;\n    \trapidjson::Writer\u003crapidjson::StringBuffer\u003e writer(buffer);\n    \tdoc.Accept(writer);\n    \n    \tconst char *jsonStr = buffer.GetString();\n    \tSTRCMP_EQUAL(jsonStr, \"{\\\"supplier\\\":\\\"Dell\\\",\\\"dateTime\\\":1657058000,\\\"goods\\\":[{\\\"Id\\\":1,\\\"Created\\\":1657052789,\\\"Group\\\":\\\"Keyboards\\\",\\\"Name\\\":\\\"K1-100\\\",\\\"Price\\\":58.\"\n    \t\t\t\t\t\t  \"25,\\\"Quantity\\\":48.2,\\\"Deleted\\\":false,\\\"StoreName\\\":null},{\\\"Id\\\":2,\\\"Created\\\":1657053789,\\\"Group\\\":\\\"Keyboards\\\",\\\"Name\\\":\\\"K2-100\\\",\\\"Price\\\":158.\"\n    \t\t\t\t\t\t  \"25,\\\"Quantity\\\":448.2,\\\"Deleted\\\":false,\\\"StoreName\\\":null},{\\\"Id\\\":3,\\\"Created\\\":1657054789,\\\"Group\\\":\\\"Keyboards\\\",\\\"Name\\\":\\\"K3-100\\\",\\\"Price\\\":\"\n    \t\t\t\t\t\t  \"258.25,\\\"Quantity\\\":548.2,\\\"Deleted\\\":false,\\\"StoreName\\\":null},{\\\"Id\\\":4,\\\"Created\\\":1657055789,\\\"Group\\\":\\\"Keyboards\\\",\\\"Name\\\":\\\"K4-100\\\",\"\n    \t\t\t\t\t\t  \"\\\"Price\\\":358.25,\\\"Quantity\\\":648.2,\\\"Deleted\\\":false,\\\"StoreName\\\":null}],\\\"user\\\":{\\\"name\\\":\\\"Joe Doe\\\",\\\"role\\\":1}}\");\n    }\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviordash%2Frapidjsonwrapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviordash%2Frapidjsonwrapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviordash%2Frapidjsonwrapper/lists"}