marshmallowの使い方が分かりません・・・
marshmallowはschema定義用のPythonライブラリだ。
JSONデータをPythonで読みこむ時などに使えるぞ。
✔️ 本記事のテーマ
marshmallow(Pythonライブラリ)の使い方
✔️ 読者さんへの前置きメッセージ
本記事は「marshmallowを使ったJSONデータの読み込み」について書いています。
この記事を読むことで
「marshmallowのschema定義 や marshmallowを使ったPythonサンプルコード」
を理解できます。
marshmallowはschema定義用のPythonライブラリです。
marshmallowを使うことで、
JSONデータをインプットとしてPythonモジュールを動かすことができます。
marshmallowはその手軽さ & 便利さから、世界ではそれなりに使われています。
今回はmarshmallowを使って、PythonからJSONデータを受け取る方法について解説します。
marshmallow(Pythonライブラリ)とは?
marshmallowはschema定義用のPythonライブラリです。
marshmallowを使うことで、
schemaを定義してPython型以外のデータ(例えば、JSONなど)を読み込むことができます。
Pythonでシステムを作る上で、JSONデータをインプットとすることもあるでしょう。
そのような時にmarshmallowを使えば、
JSONの階層的なデータ構造をそのままPythonへ読み込むことができます。
次章から、marshmallowの具体的な使用方法について解説していきましょう。
marshmallowのPython環境へのインストール
marshmallowはサードパーティ製のPythonライブラリです。
そのため、marshmallowを使うには、Python環境へインストールする必要があります。
ターミナルから以下のコマンドで、marshmallowをインストールしましょう。
pip install marshmallow
これによりPythonからmarshmallowを使えるようになります。
marshmallowの使い方(手順)
marshmallowは以下の手順で使用します。
- model定義
- schema定義
- schemaを使ってJSONデータを読み込む/書き出す
順番に説明していきましょう。
model定義(Pythonライブラリmarshmallowでの前準備)
marshmallowでschemaを作るにはまずmodelを定義する必要があります。
modelとはschema定義の雛形のようなものです。
ただこれは動作上のお作法のようなものなので、modelで特にややこしい定義を行う必要はありません。
superclassとしてお決まりの定型文を書き、
個別のmodelではclassだけ定義しておき中身はpassしておけばOKです。
class AllArgConstructorModel:
def __init__(self, **kwargs):
for k, v in kwargs.items():
setattr(self, k, v)
class SampleModel(AllArgConstructorModel):
pass
なお、デバッグのために__repr__などを定義することもできますが、特に必須ではありません。
次にこのmodelを使ってschemaを定義していきましょう。
schema定義(Pythonライブラリmarshmallowでの前準備)
schema定義では各schemaの項目を定義します。
from marshmallow import Schema, fields, post_load
from models import SampleModel
class SampleModelSchema(Schema):
id = fields.Int(required=True)
name = fields.Str(required=True)
@post_load
def build(self, data, **kwargs):
return SampleModel(**data)
上記コードのように各schemaに必要な項目をclaas変数として定義します。
また、その項目の型、必須かどうかなどもここで定義します。
例えば、String型、必須YESのnameという項目は以下のように定義します。
name = fields.Str(required=True)
最後にJSONデータをloadした時の挙動も定義します。
ここは定型文で先ほどのmodelをreturnするように書けばOKです。
@post_load
def build(self, data, **kwargs):
return SampleModel(**data)
schemaを使ってJSONデータを読み込む/書き出す
ここまででschema定義が完了しているはずなので、
いよいよschemaを使ってJSONデータを読み込んでいきます。
データLOAD時は、まずschema定義で定義したclassでインスタンスを生成します。
そして、生成したインスタンスのlaodメソッドを使うことでデータを読み込むことができます。
# LOAD
schema = SampleModelSchema()
smp = schema.load(smp)
このように書くことでsmpには、読み込んだJSONの最上位のデータが入ってきます。
また、Python側で処理を加えたデータをJSONにDUMPするときも同じです。
schema定義のインスタンスを生成し、
dumpメソッドを使うことでデータを書き出すことができます。
# DUMP
schema = SampleModelSchema()
schema.dumps(SampleModelSchema(name='Taro', age=20))
このようにしてmarshmallowを使って、
PythonからJSONデータの読み込み/書き出しを行うことができます。
marshmallowやPythonについてスキルをつけるなら
marshmallowを使ったPythonでJSONデータ読み込む方法について解説しました。
Pythonをマスターすると様々なことがプログラムでできるようになります。
Pythonを深く網羅的に学ぶためには以下の書籍がオススメです。
この書籍はPythonについてかなり深く、そして丁寧に書かれています。
Python の基本文法だけでなく、
いかにして Python の持つ力を最大限引き出せるかという視点で書かれています。
Python 初心者はもちろん、すでに Python を使える方にもオススメの一冊です。
エンジニアとしての自身の価値をチェックする(完全無料)
エンジニアとして、
自分の価値がどれくらいのものかご存知でしょうか?
エンジニアとしてIT業界に身を置いていると
今の会社でずっと働くのか、フリーランスとして独立するのか …
と様々な選択肢があります。
どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも
自身の価値を知っておくことはとても重要です。
TechClips ME では、
職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。
▼▼▼▼▼
▲▲▲▲▲
しかもTechClips MEでは想定年収を企業から提示してくれるので、
自身の価値を数字で分かりやすくたしかめることができます。
登録はもちろん完全無料なので、一度登録してみると良いかもしれません。
コメント