7
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

【FileMaker】FileMaker 16のJSONで楽をする郵便番号検索実装(2)

さて、前回のcURL+JSONに引き続き、今回は複数件ヒットしたデータの処理です。

郵便番号って、一つの郵便番号に一つの地名かと思っていたら、そうでない地域がたくさんあるんですよね。びっくりです。
今回サンプルを作るのに、郵便番号データを元にどの郵便番号が一番多く地域を担当しているかリストしてみました。
FM16JSON2_0.png
66件!

すごいですね。。。
春日、「かすが」ではなく「はるひ」と読むところも意外性があって、調べていて楽しかったです。

そして、こんな風に複数件の地域を担当している郵便番号がどのくらいあるかを調べたら、ここに表示しきれないほどたくさんあったので、割愛します。

複数件の郵便番号地域を取得する実装

動きの確認

まずは、複数件のデータが返ってくる動きをみてみます。

https://youtu.be/P4S5kfJsptY

今回は、事前調査で20件の地域を担当している郵便番号:969-0401で実行します。
FM16JSON2_1.png

数秒、かかりました。
FM16JSON2_2.png
多くのデータを取得する際は、転送時間がかかりそうなので、場面によってはcURL+JSONを使わずに今までのように郵便番号データを別FMで管理してレスポンスを早める方がいいかもしれません。

レスポンス分解(必ずやらなくても目的のデータは取得できます)のあと、results分解。
20件、取得できています。
FM16JSON2_3.png

今回は住所データをレコードに保存しました。
FM16JSON2_4.png
20件のレコードが出来上がりました。

実装してみる

では、実際に実装を見ていきましょう。

複数件のデータを保管するのに、テーブルを一つ追加しました。
FM16JSON2_5.png

改修したのは、results分解のスクリプトです。
FM16JSON2_6.png
取得したresultsの件数をJSONListKeysとValueCountで計算し、そのresults件数分Loopを回して配列データをレコードにセットしています。

どうしても気に入らないのは、
"results[$cnt]address1"
と書きたいのに、
"results[" & $cnt & "]address1"
と「&」で文字列を作らないとならないことです。
この辺が、FileMakerあるあるではないでしょうか。。。orz

多言語出身なので、どうもこういう書き方に未だに慣れません。
配列くらい、整形せずに書きたいものです。

新しく出てくるJSON関連関数は、JSONListKeysですので、それさえ使い方を押さえれば、複数件データ取得はいつものデータ処理スクリプトと同様です。
FM16JSON2_7.png

いかがでしたでしょうか?
少しのJSON関数を覚えておけば、かなりできることが広がると思いますので、ぜひやってみてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
7
Help us understand the problem. What are the problem?