dogrunjp
10/1/2016 - 12:48 PM

Flatten complicated json data

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