PythonでJSONからnullや空のキーを取り除く方法を紹介します。この方法は、レスポンスに含めないで返すような仕様を実装する際に役立ちます。

まず、以下のような関数を定義します。

import json

def remove_empty_elements(d):
    def empty(x):
        return x is None or x == {} or x == [] or x == ""

    if not isinstance(d, (dict, list)):
        return d
    elif isinstance(d, list):
        return [v for v in (remove_empty_elements(v) for v in d) if not empty(v)]
    else:
        return {k: v for k, v in ((k, remove_empty_elements(v)) for k, v in d.items()) if not empty(v)}

この関数は、引数として辞書またはリストを受け取り、その中のnullや空のキーを取り除きます。

次に、この関数を使って実際にJSONからnullや空のキーを取り除く例を見てみましょう。

if __name__ == '__main__':
    foo = {
        "str": "String",
        "empty_str": "",
        "none": None,
        "zero": 0,
        "bool": False,
        "object": {
            "foo": "bar",
            "none": None,
            "empty_str": "",
        },
        "empty_object": {},
        "array": ["foo", "bar", ""],
        "empty_array": [],
        "array_object": [
            {
                "foo": "bar",
                "none": None,
                "empty_str": "",
            },
            {
                "foo": "bar",
                "none": None,
                "empty_str": "",
            },
            {},
        ]
    }
    bar = remove_empty_elements(foo)
    print(json.dumps(bar, indent=4))

このコードを実行すると、以下のような出力が得られます。

{
    "str": "String",
    "zero": 0,
    "bool": false,
    "object": {
        "foo": "bar"
    },
    "array": [
        "foo",
        "bar"
    ],
    "array_object": [
        {
            "foo": "bar"
        },
        {
            "foo": "bar"
        }
    ]
}

このように、PythonでJSONからnullや空のキーを取り除くことができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です