JSON schema

Jina·2020년 6월 14일
0

Today I Learned

목록 보기
15/21

json schema 벨리데이션 만들어줌

https://jsonschema.net/home
여기 사이트 가면 만들어주는데

첫번째 화면에 내 json 입력하면
옆에서 validation 해줌

여기의 펜 버튼 누르면 수정 할 수 있음
나의 요청에 맞게 수정가능

이런식으로 수정 가능한데

type --> int, null 등을 지정 가능

require -> 필수로 들어와야하는 값이면 표시

pattern --> 정규식

{
    "start_period": "2020-06-12",
    "end_period": "2020-07-02",
    "seller_name": "판매자",
    "product_name": "상품",
    "product_id": 1,
    "code": "SB000000000000000009",
    "seller_attribute": 1,
    "on_sale": 1,
    "on_list": 0,
    "discount": 1,
    "limit": 10,
    "offset": 0
}

위의 내용을 넣으면

{
    "$schema": "http://json-schema.org/draft-07/schema",
    "$id": "http://example.com/root.json",
    "type": "object",
    "title": "The Root Schema",
    "description": "The root schema is the schema that comprises the entire JSON document.",
    "default": {},
    "required": [
        "checked",
        "dimensions",
        "id",
        "name",
        "price",
        "tags"
    ],
    "properties": {
        "checked": {
            "$id": "#/properties/checked",
            "type": "boolean",
            "title": "The Checked Schema",
            "description": "An explanation about the purpose of this instance.",
            "default": false,
            "examples": [
                false
            ]
        },
        "dimensions": {
            "$id": "#/properties/dimensions",
            "type": "object",
            "title": "The Dimensions Schema",
            "description": "An explanation about the purpose of this instance.",
            "default": {},
            "examples": [
                {
                    "height": 10.0,
                    "width": 5.0
                }
            ],
            "required": [
                "width",
                "height"
            ],
            "properties": {
                "width": {
                    "$id": "#/properties/dimensions/properties/width",
                    "type": "integer",
                    "title": "The Width Schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": 0,
                    "examples": [
                        5
                    ]
                },
                "height": {
                    "$id": "#/properties/dimensions/properties/height",
                    "type": "integer",
                    "title": "The Height Schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": 0,
                    "examples": [
                        10
                    ]
                }
            }
        },
        "id": {
            "$id": "#/properties/id",
            "type": "integer",
            "title": "The Id Schema",
            "description": "An explanation about the purpose of this instance.",
            "default": 0,
            "examples": [
                1
            ]
        },
        "name": {
            "$id": "#/properties/name",
            "type": "string",
            "title": "The Name Schema",
            "description": "An explanation about the purpose of this instance.",
            "default": "",
            "examples": [
                "A green door"
            ]
        },
        "price": {
            "$id": "#/properties/price",
            "type": "number",
            "title": "The Price Schema",
            "description": "An explanation about the purpose of this instance.",
            "default": 0,
            "examples": [
                12.5
            ]
        },
        "tags": {
            "$id": "#/properties/tags",
            "type": "array",
            "title": "The Tags Schema",
            "description": "An explanation about the purpose of this instance.",
            "default": [],
            "examples": [
                [
                    "home",
                    "green"
                ]
            ],
            "items": {
                "$id": "#/properties/tags/items",
                "type": "string",
                "title": "The Items Schema",
                "description": "An explanation about the purpose of this instance.",
                "default": "",
                "examples": [
                    "home",
                    "green"
                ]
            }
        }
    }
}

이렇게 바꿔줌


사용하기

  1. 위의 내용을 python 파일에 붙여넣기
    예를들어
# my_schema.py
json_schema = {위의 스키마}
  1. 정규화를 사용할 파일에 아래의 함수 import
from jsonschema import validate, ValidationError

여기서 validate는 벨리데이션 오류 확인해주는 함수이고
validationError는 에러 문구 확인해주는 함수!

  • validate 사용하기
validate(validation확인할 josn, 스키마)

사용 예시

from jsonschema import validate, ValidationError

from my_schema import json_schema

validate(validation확인할 josn, json_schema)

0개의 댓글