Drupal FeedsモジュールでJSONベースで都道府県コードを取り込んでみた

hagi に投稿

Drupalでマスターデータを設定したい時、件数が少なければ、打ち込んでしまうのだが、ミスタイプも怖いしできれば公開されているデータを拾ってきて登録したいと思うことは時々ある。

今回は、都道府県コード(東京が13のやつ)をTaxonomyとして取り込むことにした。その備忘録である。

まず都道府県コードだが、かなもあった方が便利なので、「JIS X 0401 都道府県コード JSON」という記事の都道府県コードJSONファイルを利用させてもらうことにした。

まずFeedsモジュールをインストールし、JSONで読み込むためにFeeds extensible parsersモジュールも入れた。Feedsモジュールのページには、ビデオがあるので、バージョンの違いがあってそのままの操作にはならないものの概ね問題なくできる(実際には、JSONを読み込む前にcsvで実験してみた)。JSONPathパーザーの設定はFeeds extensible parsersのページにある。ポイントとなるのは、Contextの設定である。

画像

参照するJSONファイルは、トップレベルではtitle, description, prefecturesがあり、prefecturesの下は、code, name, kana_name, en_name, start_dateと構造化されている。さらにkana_nameの下にhalf_upper, full_lowerとなっていて、半角カナ小文字なしと全角カナ小文字ありとなっている。Termとして取り込む場合は、上記のキャプチャのように$.prefectures.*として接頭辞を示し、ソースとターゲットを指定すればOK。kana_name.full_lowerのように孫レベルも取れるので、具合が良い。

とりあえず所期の目的は達せられたので、ついでに市区町村コードを都道府県内市区町村一覧取得APIから取り込めるように設定してみた。JSONを返すAPIなので、ファイルを落とすことなく取り込めるのが良い。加えて、codeが一意であることを指定することで、繰り返し読み込んでもOKだし、北海道でも東京でも存在する中央区がnameは同じでcodeは別の形で登録できる。

画像

ただ、codeの頭2桁が都道府県コードなのだが、Feedsモジュールだけでは、その関係を記述することは困難である。恐らくMigrate Plusモジュールと関連Pluginを利用するのが適切なのだろう。ともあれ、単純なマスター取り込みはJSONベースでも十分できることが分かったので良しとする。

 

タグ