いろいろやってみるにっき

てきとーに生きている奴の日記

古いエントリのサムネイル画像がリンク切れになってたりするけど、チマチマ修正中


【小ネタ】CSVから構造化されたJSONを作る

意外と簡単。ポイントは

  1. CSVのデータ項目名はドット'.'区切りで作成。
  2. UTF-8で吐き出す。またExcelで扱うのであればBOMも付ける。
  3. csvtojsonでJSONに変換。

の3つ。

 

CSVの例

a1,a2.b1,a2.b2,a2.b3.c1,a2.b3.c2,a2.b4.c1.d1,a2.b4.c1.d2.e1,a2.b4.c1.d2.e2,a2.b4.c1.d3.e1,a2.b4.c1.d3.e2
ああ,いい,うう,ええ,おお,かか,きき,くく,けけ,ここ
11,22,33,44,55,66,77,88,99,1111

f:id:shigeo-t:20180305095227p:plain

保存するときはutf-8で。 

 

csvtojsonはnpmでインストールする。

 npm i --save csvtojson

Windowsマシンで使用する場合、 Windows Subsystem for Linuxを動かし、Ubuntuをストアアプリとして動作させ、node.jsとnpmをインストールしておく。csvtojsonはnodeを使うので、nodeコマンドにパスが通っていることを確認要。

 

WindowsならExcelもあるので、Windows上にUbuntuがあると一台で全部できる。

f:id:shigeo-t:20180305095945p:plain

f:id:shigeo-t:20180305100105p:plain


csvtojsonのおかげで、JSONは簡単に作れる。 

csvtojson < csvファイル名.csv > jsonファイル名.json

 

上のCSV例をJSON化するとこんな感じ。

[
    {
        "a1": "ああ",
        "a2": {
            "b1": "いい",
            "b2": "うう",
            "b3": {
                "c1": "ええ",
                "c2": "おお"
            },
            "b4": {
                "c1": {
                    "d1": "かか",
                    "d2": {
                        "e1": "きき",
                        "e2": "くく"
                    },
                    "d3": {
                        "e1": "けけ",
                        "e2": "ここ"
                    }
                }
            }
        }
    },
    {
        "a1": "11",
        "a2": {
            "b1": "22",
            "b2": "33",
            "b3": {
                "c1": "44",
                "c2": "55"
            },
            "b4": {
                "c1": {
                    "d1": "66",
                    "d2": {
                        "e1": "77",
                        "e2": "88"
                    },
                    "d3": {
                        "e1": "99",
                        "e2": "1111"
                    }
                }
            }
        }
    }
]

 

ソフトウェアデザイン 2018年3月号
 
JSON at Work: Practical Data Integration for the Web

JSON at Work: Practical Data Integration for the Web

 
お時間あったら、他のエントリもクリックして頂ければ幸いです。