{"id":22496819,"url":"https://github.com/keosariel/flask_jsonvalidator","last_synced_at":"2025-08-03T03:32:19.772Z","repository":{"id":45600131,"uuid":"332374839","full_name":"keosariel/flask_jsonvalidator","owner":"keosariel","description":"Validates JSON data","archived":false,"fork":false,"pushed_at":"2021-06-03T22:13:20.000Z","size":40,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-05-22T00:06:00.285Z","etag":null,"topics":["api","flask","flask-jsonvalidator","json","json-data","python","requests"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/flask-jsonvalidator/","language":"Python","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/keosariel.png","metadata":{"files":{"readme":"README.rst","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}},"created_at":"2021-01-24T05:32:03.000Z","updated_at":"2024-04-21T14:49:56.000Z","dependencies_parsed_at":"2022-07-20T16:02:35.874Z","dependency_job_id":null,"html_url":"https://github.com/keosariel/flask_jsonvalidator","commit_stats":null,"previous_names":["saskayy/flask_jsonvalidator","keosariel/flask_jsonvalidator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keosariel%2Fflask_jsonvalidator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keosariel%2Fflask_jsonvalidator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keosariel%2Fflask_jsonvalidator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keosariel%2Fflask_jsonvalidator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keosariel","download_url":"https://codeload.github.com/keosariel/flask_jsonvalidator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228520738,"owners_count":17932629,"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":["api","flask","flask-jsonvalidator","json","json-data","python","requests"],"created_at":"2024-12-06T20:14:28.972Z","updated_at":"2024-12-06T20:14:29.721Z","avatar_url":"https://github.com/keosariel.png","language":"Python","readme":"Flask JSONvalidator\n====\n\n**Flask_jsonvalidator** is a little library for validating request JSON data or pratically any json data, such as those obtained from external services or command-line parsing or even JSON data from a request to your api. All errors would be returned in JSON format too.\n\nInstalling\n----------\nInstall and update using `pip` :\n\n.. code-block:: text\n\n    $ pip install flask-jsonvalidator\n\n..\nExample\n-------\nHere is a quick example to using `flask_jsonvalidator`, validating a request JSON data:\\\n\n**All neccessary imports**\n\n.. code-block:: python\n    \n    # validators.py\n    \n    from flask_jsonvalidator import (\n        JSONValidator,\n        IntValidator,\n        StringValidator,\n        ArrayOfValidator\n    )\n\n**A simple validator class**\n\n.. code-block:: python\n\n    # validators.py\n\n    class JSONCheck(JSONValidator):\n        validators = {\n            \"name\"    : StringValidator(max=15, min=2, nullable=False),\n            \"age\"     : IntValidator(min=13, nullable=False),\n            \"hobbies\" : ArrayOfValidator(validator=StringValidator(min=2,max=15, nullable=False))\n        }\n\nA simple decorator for the JSON data check \n------------------------------------------\n.. code-block:: python\n\n    from functools import wraps\n    from flask import request, abort, jsonify\n    \n    def response_data(data, error_code=None, description=\"\", error_data=None, status_code=200):\n        data = data\n        has_error   = True if error_code else False\n\n        if not description:\n                # ERRORS_DESCRIPTION is a Dictionary containing error-codes as keys and their \n                # description as the value\n\n            description = ERRORS_DESCRIPTION.get(error_code,\"\")\n\n        if has_error and error_code:\n                # ERRORS_STATUS_CODE is a Dictionary containing error-codes as keys and their \n                # corresponding status code as the value\n\n            status_code = ERRORS_STATUS_CODE.get(error_code, BAD_REQUEST)\n\n        ret_json = {\n            \"data\" : data,\n            \"error_code\"  : error_code,\n            \"has_error\"   : has_error,\n            \"description\" : description,\n            \"error_data\"  : error_data,\n            \"status_code\" : status_code\n        }\n\n        return jsonify(ret_json), status_code\n\n    def args_check(validator):\n        def decorator(f):\n            @wraps(f)\n            def decorated_function(*args, **kwargs):\n                json_data = request.json if request.json else {}\n                no_err, msg = validator.validate(json_data)\n\n                if not no_err:\n                    # E002 = Invalid Request JSON\n                    res = response_data(\n                        data=None, \n                        error_code=E002,\n                        error_data=msg\n                    )\n\n                    return res\n\n                return f(*args, **kwargs)\n            return decorated_function\n        return decorator\n\nUse case\n--------\n.. code-block:: python\n\n    from flask import (\n        Flask, \n        jsonify, \n        request, \n        abort\n    )\n    from validators import JSONCheck\n\n    app = Flask(__name__)\n\n    users = []\n\n    @app.route(\"/users\", methods=[\"GET\"])\n    def get_users():\n        return jsonify(users)\n\n    @app.route(\"/users\", methods=[\"POST\"])\n    @args_check(JSONCheck())\n    def add_user():\n        global users\n\n        user = dict(\n            name   = request.json.get(\"name\"),\n            age    = request.json.get(\"age\"),\n            hobbies= request.json.get(\"hobbies\")\n        )\n        users.append(user)\n        return jsonify(user)\n\n    if __name__ == \"__main__\":\n        app.run(debug=True)\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeosariel%2Fflask_jsonvalidator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeosariel%2Fflask_jsonvalidator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeosariel%2Fflask_jsonvalidator/lists"}