{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# Jsonizable\nJsonizable is a python library that allows to parse json objects into python classes and vice versa. This is really helpful to deal with complex APIs that return long JSON objects.\n\nThe Jsonizable class allows the user to insert logic in JSONs recieved by external servers and it's really helpful in the data integrity check with only two methods `write` and `read`.\n\n__Guide:__\n* [Quickstart](#quickstart)\n* [Collections](#collections)\n* [Optional Parameters](#optional-parameters)\n* [Nested Objects](#nested-objects)\n\n## Quickstart\n\nThe recommended way to use this package is defining data schemas for each class. To do this we will need to implement a `Meta`class inside our object and there define a `schema`, which is a dictionary containing the name and type of our JSON object.\n\n```python\nclass Car(Jsonizable):\n class Meta:\n schema = dict(\n name=str,\n model=str,\n year=int,\n max_speed=float,\n is_new=bool,\n )\n```\n\nBy doing this we will be able to parse and serialize the `Car` object into JSON.\n\n```python\njson = {\n \"name\": 'Tesla',\n \"model\": 'v6',\n \"year\": 2017,\n \"max_speed\": 186.63,\n \"is_new\": True,\n}\n\n# Parse the JSON object into a car\nmy_car = Car(json=json)\nprint(my_car.name)\n>> Tesla\n\nprint(my_car.year)\n>> 2017\n\n#Serialize the Car into a JSON object\nmy_car.write()\n>> { \"name\": \"Tesla\", \"model\": \"v6\", \"year\": 2017, \"max_speed\": 186.63, \"is_new\": True }\n```\n\n## Collections\n\nIt is also posible to define collections for our Jsonized classes. We can define dictionaries, tuples and lists with generic types:\n\n```python\nclass MyJsonizableClass(Jsonizable):\n class Meta:\n schema = dict(\n some_list=list,\n some_tuple=tuple,\n some_dict=dict,\n )\n\njson = {\n some_list: [1, 2, \"Forest\", 4],\n some_tuple: [1, 2.23, 3, \"hello\"],\n some_dict: {\n \"name\": \"John Doe\",\n 4: \"Martin Lee\",\n },\n}\n\nobj = MyJsonizableClass(json=json)\n\n```\n\nAnd again we will receive an object with it's inner parameters.\n\nBut, in the most of the cases we will want to provide the collection a type, that will be checked. We can force the types as follows:\n\n```python\nclass Lottery(Jsonizable):\n class Meta:\n schema=dict(\n first_prize=int,\n second_prizes=[int],\n third_prizes=(int, ),\n )\n\njson = {\n \"first_prize\": 24666123,\n \"second_prizes\": [1244123, 4551235512, 32341234],\n \"third_prizes\": [2344123, 412555123, 234444512, 12333415],\n}\n\nobj = Lottery(json=json)\n```\n\n## Optional Parameters\nSometimes our objects will have some optional parameters, that obviously cannot be sent as `None`to the API because the validator inmediatly explodes. In this case we will probably want to define optional parameters, to do so we will end the parameter name with a question marker `my_param?` as the example below:\n\n```python\nclass MyQuanticClass(Jsonizable):\n class Meta:\n schema={\n \"name\": str, # This is mandatory parameter\n \"state?\": int, # This is an optional parameter\n }\n\njson1 = {\n \"name\": \"Electron\",\n}\n\nclass1 = MyQuanticClass(json=json1)\n\njson2 = {\n \"name\": \"Proton\",\n \"state\": 3,\n}\n class2 = MyQuanticClass(json=json2)\n\n```\n\nWorks like charm ;).\n\n## Nested Objects\n\nOk, it was easy until now, simple objects and simple interfaces. What happens when we deal with nasty hard nested objects. To do so you can simply define a hierarchy of objects and tell the parent the type of the son. (Better with an example, huh?)\n\n```python\n# Define a parent class\nclass PetShop(Jsonizable):\n class Meta:\n schema={\n \"name\": str,\n \"pets\": [Pet],\n }\n\n# Define the subclass\nclass Pet(Jsonizable):\n class Meta:\n schema={\n \"species\": str,\n \"name\": str,\n \"price\": float,\n }\n\njson={\n \"name\": \"Funny puppies\",\n \"pets\": [\n {\n \"species\": \"dog\",\n \"name\": \"Tobby\",\n \"price\": 150,\n },\n {\n \"species\": \"bird\",\n \"name\": \"Mr. Tingles\",\n \"price\": 20,\n }\n ]\n}\n\npet_shop = PetShop(json=json)\nprint(pet_shop.pets[1].name)\n>> Mr. Tingles\n```\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pablomartinezm/jsonipy", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "jsonizable", "package_url": "https://pypi.org/project/jsonizable/", "platform": "Posix; MacOS X; Windows", "project_url": "https://pypi.org/project/jsonizable/", "project_urls": { "Homepage": "https://github.com/pablomartinezm/jsonipy" }, "release_url": "https://pypi.org/project/jsonizable/1.0.3/", "requires_dist": null, "requires_python": "", "summary": "Convert your Python classes into JSON objects easily.", "version": "1.0.3" }, "last_serial": 5202693, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "c4099507e991f4eadd775c508911aef1", "sha256": "52868953958aa670c32f5f71ba949c64fc01a75e378692b23672d6b7ef926535" }, "downloads": -1, "filename": "jsonizable-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c4099507e991f4eadd775c508911aef1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4809, "upload_time": "2018-11-21T11:06:28", "url": "https://files.pythonhosted.org/packages/8a/45/370cc06708bd669bad35937d9f7fe696cd023915f4a2115804c8322261d2/jsonizable-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "84ea86007f7e37c10691a72f44a730d6", "sha256": "176386ab455fb3820190d83eb7686966ab4bac3a19cd207be6d0ca25dd478fa9" }, "downloads": -1, "filename": "jsonizable-0.0.2.tar.gz", "has_sig": false, "md5_digest": "84ea86007f7e37c10691a72f44a730d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4203, "upload_time": "2018-11-21T11:06:29", "url": "https://files.pythonhosted.org/packages/97/f0/6986ec6d04373c92ac89a4530fc3af9d8ca561affd18a1198d0fae0fba5e/jsonizable-0.0.2.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "f3704c0b704c9a9171eb47e3f63cdb4d", "sha256": "c05365e754cae478f4981338b33b1833d781ff88993c74a77ca464fc37bb6f11" }, "downloads": -1, "filename": "jsonizable-0.0.5-py2-none-any.whl", "has_sig": false, "md5_digest": "f3704c0b704c9a9171eb47e3f63cdb4d", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6384, "upload_time": "2018-11-19T21:29:22", "url": "https://files.pythonhosted.org/packages/51/c9/b47d1802a3ea09b86540a0a585a1e3dea49cb239b89da8a557ca780d04e9/jsonizable-0.0.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a426db93b714f894a8244e7e558b0c6b", "sha256": "b96562655e165b0a0168d7357c15d839369cea36f6e3b89658bc2b255dc92608" }, "downloads": -1, "filename": "jsonizable-0.0.5.tar.gz", "has_sig": false, "md5_digest": "a426db93b714f894a8244e7e558b0c6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4742, "upload_time": "2018-11-19T21:29:24", "url": "https://files.pythonhosted.org/packages/1f/d6/d32abf9d94ea9ffb34603801d45951607bc8c9a8a6574355b44bee9795a2/jsonizable-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "184907f72cd9c00e01a7d2e66fcc7bd3", "sha256": "5adee2a2e3bf23fe3e3f0067e0a2e43818ef92be2238df20ca5d733140f356fb" }, "downloads": -1, "filename": "jsonizable-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "184907f72cd9c00e01a7d2e66fcc7bd3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4808, "upload_time": "2018-11-21T11:08:12", "url": "https://files.pythonhosted.org/packages/25/22/a82fb0609cd759f8160b852ed681ff02bfdd566b248112451ee192cd0407/jsonizable-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b37113de7f752592cca7a6b75b4019e5", "sha256": "18e400fbbaf3bd2cec9d0a3ba6c737b796dad3d3c491ff0e9b7cc03ab1c6d130" }, "downloads": -1, "filename": "jsonizable-0.0.6.tar.gz", "has_sig": false, "md5_digest": "b37113de7f752592cca7a6b75b4019e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4207, "upload_time": "2018-11-21T11:08:14", "url": "https://files.pythonhosted.org/packages/4b/c7/4bdf9e615e388c180e3381c7da8da4d656006fc8f9ecf08e24e1f03c3126/jsonizable-0.0.6.tar.gz" } ], "0.0.65": [ { "comment_text": "", "digests": { "md5": "2ba6b1180c4a44aeae0c8508347af020", "sha256": "26b9c4be7844e6a6535baff270ce7e7bce763c4522c9db81d4989dd9dd182276" }, "downloads": -1, "filename": "jsonizable-0.0.65-py3-none-any.whl", "has_sig": false, "md5_digest": "2ba6b1180c4a44aeae0c8508347af020", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4820, "upload_time": "2018-11-21T11:11:12", "url": "https://files.pythonhosted.org/packages/64/e3/63c4d046b286a11340871badc8e98a837436a564de7f4504ebe21de856cf/jsonizable-0.0.65-py3-none-any.whl" } ], "0.0.66": [ { "comment_text": "", "digests": { "md5": "402061f772d2d942418acbaf2cd21d1c", "sha256": "7c0991387ef66041058cf2d5fed6998d88236c1e1cb10b93f88a06b521462ab3" }, "downloads": -1, "filename": "jsonizable-0.0.66-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "402061f772d2d942418acbaf2cd21d1c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8112, "upload_time": "2018-11-22T07:51:19", "url": "https://files.pythonhosted.org/packages/9b/af/a2b33eb00aec43a535d787fb3df917ab25dfd533fe0b8cadfb5ad261a142/jsonizable-0.0.66-py2.py3-none-any.whl" } ], "0.0.67": [ { "comment_text": "", "digests": { "md5": "c005c2f90ea24056274682dd598dcbb5", "sha256": "b3b2215fff2b00b2080aeb34e27736159b03a7fbca27d1ac941f3ed63d631981" }, "downloads": -1, "filename": "jsonizable-0.0.67-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c005c2f90ea24056274682dd598dcbb5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6433, "upload_time": "2018-11-22T07:54:58", "url": "https://files.pythonhosted.org/packages/2a/95/14d32b037ed3e1f1ebe98c6019a83ab278fdba9405b7c1ff2cc42a39f208/jsonizable-0.0.67-py2.py3-none-any.whl" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "af9b296ab83aeabcc3e0a466558ad463", "sha256": "b7d8d81b39d55ad173fd847a68c423cb02d2202af8db3f5a2fcd93ecf44e597a" }, "downloads": -1, "filename": "jsonizable-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "af9b296ab83aeabcc3e0a466558ad463", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4810, "upload_time": "2018-11-21T11:22:35", "url": "https://files.pythonhosted.org/packages/f8/a4/bd8776d59c55dafdf65962de483d5d296f993a08ba71e6a9921e83fa78f5/jsonizable-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0fad4b4621a2291018a45175cf2376b6", "sha256": "98d11f30fdb91d23e7b5a0d7e5fe7317affd7647c5cae335107f86becdc493b6" }, "downloads": -1, "filename": "jsonizable-0.0.7.tar.gz", "has_sig": false, "md5_digest": "0fad4b4621a2291018a45175cf2376b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4209, "upload_time": "2018-11-21T11:22:36", "url": "https://files.pythonhosted.org/packages/d7/c5/62e17d30f85db1c49a32e356ce6f993c2e42d6c1a82ea5800d83965de6cb/jsonizable-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "30717b1ac67ad76a3c3ce7dea0a60112", "sha256": "6adcee086e4a2b7374f5a45229f5d803c38050fb896a5cda713f0e9e20c92279" }, "downloads": -1, "filename": "jsonizable-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "30717b1ac67ad76a3c3ce7dea0a60112", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4816, "upload_time": "2018-11-21T12:06:23", "url": "https://files.pythonhosted.org/packages/ff/e9/ba0a7deb1d2d020632750ee6dbbe58431a2ae0f2078d7a1dc246bddeda72/jsonizable-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0ca6d584313fad72cd0d438dcbdc3133", "sha256": "a2b91113687359f3da4eec67ed884721a18fcc76f0783849b9bbc850238dcc54" }, "downloads": -1, "filename": "jsonizable-0.0.8.tar.gz", "has_sig": false, "md5_digest": "0ca6d584313fad72cd0d438dcbdc3133", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4216, "upload_time": "2018-11-21T12:06:24", "url": "https://files.pythonhosted.org/packages/da/9d/2f2d9bd81708f467ea2afaf27fd6a88ee440d66e033343a237d8362fb6bb/jsonizable-0.0.8.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "7138e2992d246dbb81fcb6cffe85699e", "sha256": "2cc8c62365561abe94ee95229b5d994f88d16989af02bde8a6523332ee5dfe00" }, "downloads": -1, "filename": "jsonizable-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7138e2992d246dbb81fcb6cffe85699e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7625, "upload_time": "2019-03-19T09:34:08", "url": "https://files.pythonhosted.org/packages/46/30/ea2834e60fa4e313b3c0e15efb96d129bfeb5a59afe4c5edc9118b627de0/jsonizable-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "77de6e3f2babb5824e92fe465b18fd74", "sha256": "589ca4712359148ef0ac52db03f9a6110e78266d52a0e04db0b795c893161620" }, "downloads": -1, "filename": "jsonizable-1.0.0.tar.gz", "has_sig": false, "md5_digest": "77de6e3f2babb5824e92fe465b18fd74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4304, "upload_time": "2019-03-19T09:34:09", "url": "https://files.pythonhosted.org/packages/ad/fd/41ab8d80c164ebd2188f7a141330c00bab38764f07ca6fcb86e7b8912cc7/jsonizable-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "7b5bb42c78f624c15f09f8bf6a00c12a", "sha256": "0b228f08a6f2fa8c46c87a7b8d193588a755ad75e70c23ffbd53ea4e5be95b33" }, "downloads": -1, "filename": "jsonizable-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7b5bb42c78f624c15f09f8bf6a00c12a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9284, "upload_time": "2019-03-19T12:36:47", "url": "https://files.pythonhosted.org/packages/4c/01/c870097b32fa621f245f96a3aaca9bb8adea14187c194eee224ad616cf62/jsonizable-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2b2047c1c4f230ac266a88fc6826aa4", "sha256": "c05489eda0eebd710031cd691db879ed626270bcd8e50be2cbe8be4c3ec51888" }, "downloads": -1, "filename": "jsonizable-1.0.1.tar.gz", "has_sig": false, "md5_digest": "a2b2047c1c4f230ac266a88fc6826aa4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4928, "upload_time": "2019-03-19T12:36:49", "url": "https://files.pythonhosted.org/packages/22/c8/7299d70cd9601a2a1315ca68e88533e761b3d1e76f6cfcdd48fdd58009d3/jsonizable-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "b8bbc4e9d06ca9437937ace1d9481d2c", "sha256": "e0fcc2494ef4761a082d4ec7a217a0aa10769f94b9a2456bcf298e9ae647d6ad" }, "downloads": -1, "filename": "jsonizable-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b8bbc4e9d06ca9437937ace1d9481d2c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9327, "upload_time": "2019-03-19T12:51:49", "url": "https://files.pythonhosted.org/packages/58/9a/189d8ef2ad4f8796ae25627d66b6433e6fd8acf1f1441a9cddb59c448714/jsonizable-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d63428af4c2d0d7001c402042195d17", "sha256": "2ab025d4e49228d7df75eddfa0474a4a4b2db3e57f2f4e5c9ffccc847ad02c24" }, "downloads": -1, "filename": "jsonizable-1.0.2.tar.gz", "has_sig": false, "md5_digest": "0d63428af4c2d0d7001c402042195d17", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4934, "upload_time": "2019-03-19T12:51:51", "url": "https://files.pythonhosted.org/packages/d4/b2/7cb20ef5e7391464f4da07325f89e6a221afc1a87d1c6ec6b47d0c7ca75b/jsonizable-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "cfb49c09600f094f18e4ec08751dfa8c", "sha256": "8f752ceb3248698ed71e2613969b30bd6a6a35223a3cb9e9ca0d834cf993d43a" }, "downloads": -1, "filename": "jsonizable-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "cfb49c09600f094f18e4ec08751dfa8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9403, "upload_time": "2019-04-29T10:52:54", "url": "https://files.pythonhosted.org/packages/39/07/90bcde91101067256a5af4f8b20bf0de19f40a6db4b323fd3b40476f9f08/jsonizable-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "88e8c531908f73a3b3bc4e07b6ee76b4", "sha256": "508adbcec105fa959e4736c39baa6da895a71b4b3eaf010c9c1d0003df6309cc" }, "downloads": -1, "filename": "jsonizable-1.0.3.tar.gz", "has_sig": false, "md5_digest": "88e8c531908f73a3b3bc4e07b6ee76b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5010, "upload_time": "2019-04-29T10:52:58", "url": "https://files.pythonhosted.org/packages/d7/f7/265fc0e6a473c0bf75135407a897dcb88f1b3c52e5218dee20deb5cb1994/jsonizable-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cfb49c09600f094f18e4ec08751dfa8c", "sha256": "8f752ceb3248698ed71e2613969b30bd6a6a35223a3cb9e9ca0d834cf993d43a" }, "downloads": -1, "filename": "jsonizable-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "cfb49c09600f094f18e4ec08751dfa8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9403, "upload_time": "2019-04-29T10:52:54", "url": "https://files.pythonhosted.org/packages/39/07/90bcde91101067256a5af4f8b20bf0de19f40a6db4b323fd3b40476f9f08/jsonizable-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "88e8c531908f73a3b3bc4e07b6ee76b4", "sha256": "508adbcec105fa959e4736c39baa6da895a71b4b3eaf010c9c1d0003df6309cc" }, "downloads": -1, "filename": "jsonizable-1.0.3.tar.gz", "has_sig": false, "md5_digest": "88e8c531908f73a3b3bc4e07b6ee76b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5010, "upload_time": "2019-04-29T10:52:58", "url": "https://files.pythonhosted.org/packages/d7/f7/265fc0e6a473c0bf75135407a897dcb88f1b3c52e5218dee20deb5cb1994/jsonizable-1.0.3.tar.gz" } ] }