Slide 1

Slide 1 text

PythonでJSON Schemaを扱う PyCon 2020 ビザスク スポンサーブース LT Kenya Aono

Slide 2

Slide 2 text

お前、誰よ 青野 剣矢(Aono Kenya) - ビザスク フルサポート開発チーム所属 - Python, Django - Typescript, Vue.js, AngularJS

Slide 3

Slide 3 text

このLTのアジェンダ - JSON Schemaってなんだ? - PythonでJSON Schemaを活用してみる

Slide 4

Slide 4 text

JSON Schemaってなんだ?

Slide 5

Slide 5 text

JSON Schemaとは - JSONの構造を定義するための規格 - APIの仕様書として使ったり - HTTP Content-type application/json のバリデーションとして使った り - 様々なプログラミング言語で扱うことができる

Slide 6

Slide 6 text

JSON Schemaを定義してみる { "name": "Kenya Aono", "age": 29, "team": "fullsupport-dev" "startDate": "2019-04-01" }

Slide 7

Slide 7 text

{ "$schema": "http://json-schema.org/draft-07/schema", "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "integer" }, "team": { "type": "string" }, "startDate": { "type": "string" } } }

Slide 8

Slide 8 text

enumで選択肢を定義する "team": { "type": "string", "enum": [ "fullsuport-dev", "advisor-dev", "lite-dev" ] },

Slide 9

Slide 9 text

正規表現でパターンを定義する "startDate": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" }

Slide 10

Slide 10 text

PythonでJSON Schemaを扱う

Slide 11

Slide 11 text

pip install jsonschema from jsonschema import validate, ValidationError import schema # さっき定義したスキーマとします data = { 'name': 'Kenya Aono', 'age': 29, 'team': 'fullsuport-dev', 'startDate': '2019-04-01', } try: validate(data, schema) except ValidationError as e: print(e.message)

Slide 12

Slide 12 text

{ "$schema": "http://json-schema.org/draft-07/schema", "type": "object", "required": [ "name", "age", "gender" ], "properties": { "name": { "type": "string" }, "age": { "type": "integer" }, "team": { "type": "string" }, "startDate": { "type": "string" } } }

Slide 13

Slide 13 text

jsonschema data = { 'name': 'Kenya Aono', 'age': '29sai', 'team': 'fullsuport-dev', 'startDate': '2019-04-01', } try: validate(data, schema) except ValidationError as e: print(e.message) Invalid JSON - 'age' is not of type 'integer'

Slide 14

Slide 14 text

まとめ - JSON Schemaを使えばJSONの構造を明確化することができる - PythonでJSON Schemaを扱いたいなら`pip install jsonschema`!