marshmallowの使い方【Pythonライブラリ】

marshmallowの使い方【Pythonライブラリ】Marshmallow
ゆうすけ
ゆうすけ

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(Pythonライブラリ)とは?

marshmallowはschema定義用のPythonライブラリです。

 

marshmallowを使うことで、
schemaを定義してPython型以外のデータ(例えば、JSONなど)を読み込むことができます。

 

Pythonでシステムを作る上で、JSONデータをインプットとすることもあるでしょう。

 

そのような時にmarshmallowを使えば、
JSONの階層的なデータ構造をそのままPythonへ読み込むことができます。

 

次章から、marshmallowの具体的な使用方法について解説していきましょう。

 

marshmallowのPython環境へのインストール

marshmallowのPython環境へのインストール

marshmallowはサードパーティ製のPythonライブラリです。

 

そのため、marshmallowを使うには、Python環境へインストールする必要があります。

 

ターミナルから以下のコマンドで、marshmallowをインストールしましょう。

pip install marshmallow

 

これによりPythonからmarshmallowを使えるようになります。

 

marshmallowの使い方(手順)

marshmallowの使い方(手順)

marshmallowは以下の手順で使用します。

  1. model定義
  2. schema定義
  3. 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についてスキルをつけるなら

marshmallowを使ったPythonでJSONデータ読み込む方法について解説しました。

 

Pythonをマスターすれば、様々なことを手軽に行うことができます。

 

PythonについてスキルをつけるならUdemyの教材がオススメです。

>> 現役シリコンバレーエンジニアが教えるPython 3 入門 + シリコンバレー流コードスタイル

 

Udemyは買い切りの動画学習サービスです。
一度購入してしまえば、その教材はずっと使うことができます。

 

さらに今なら30日間返金保証がついているので、
一度購入して自分の思っていたものと違った場合は費用がかかりません。

 

上記の教材はPythonの基礎から応用まで徹底的に解説しています。
また、現役シリコンバレーエンジニアによる本格的な解説も魅力的で、
教材の質の高さから4.4以上の評価がついています。

 

また、Pythonについて基礎から学ぶのであれば、オンラインスクールも良いでしょう。

 

オンラインスクールで学習すると、講義も分かりやすく、
サポート体制もしっかりしています。

 

オンラインで無料レッスンを体験することもできるので、
自分にあっているかどうかを確かめることができます。

 

オススメは以下の3つです。
どのスクールも無料体験が用意されているので、
契約前に自分に最適なスクールを探すことができるでしょう。

✔️オススメのプログラミングスクール ベスト3

プログラミングスクールについては「プログラミングスクールで失敗しないためには【オススメベスト3も紹介】」の記事でも紹介しています。

 

気になった方はぜひチェックしてみて下さい〜!

コメント

タイトルとURLをコピーしました