Skip to content

Instantly share code, notes, and snippets.

@dogrunjp
Created October 1, 2016 12:48
Show Gist options
  • Save dogrunjp/db71d9b9fed324e468d66c9fdce60e8a to your computer and use it in GitHub Desktop.
Save dogrunjp/db71d9b9fed324e468d66c9fdce60e8a to your computer and use it in GitHub Desktop.
Flatten complicated json data

階層化したJSONをフラットに変換する方法

通常jsonとしてデータお返すAPIのにCSVに機会的に変換しデータを返す オプションを付けようとして、ちょっと悩んだのでメモ

機械的なJSON2CSVのようなライブラリは使えそうになかったものの 結果的にはそれほど複雑な処理をせずにjson2csv的なメソッドを書く事ができそう。

階層化したJSONを一旦フラットなJSONにし、キーをヘッダ列にしカンマ区切りの 文字列を返せばよいのだろうと思う。

v = json.loads(json_sting)
print(tocsv(v))

def tocsv(obj, base=''):
    flat_dict = {}
    for k in obj:
        value = obj[k]
        if isinstance(value, dict):
            flat_dict.update(tocsv(value, base + k + '.'))
        elif isinstance(value, (int, str, float, bool)):
            flat_dict[base + k] = value
        else:
    return flat_dict

下のリンクをほぼそのまま参考した。メソッドの再帰呼出しとか 自分ではまず近づかない手法なので、参考にできるエントリがあってよかった。

Python script to convert complicated flattened data to JSON

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment