初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2016-04-22 10:00:56

グラ
Member

スクリプトでのjson内の配列の取得

現在、天気情報をapiで取得して保存するようなものを作成しています。
その中で、配列の中にオブジェクトが入っている項目があり、こちらの取得方法が分からず困っています。
現在APIはopenweathermapを使用しており、apiを叩くと以下のオブジェクトを受け取ります。
{"coord":{"lon":139.69,"lat":35.69},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],"base":"stations","main":{"temp":16.92,"pressure":1010.91,"humidity":99,"temp_min":16.92,"temp_max":16.92,"sea_level":1014.6,"grnd_level":1010.91},"wind":{"speed":1.13,"deg":32.0001},"clouds":{"all":0},"dt":1461284451,"sys":{"message":0.0264,"country":"JP","sunrise":1461268784,"sunset":1461316818},"id":1850147,"name":"Tokyo","cod":200}

この中にあるcoord内のlonというデータは、「#Get ( #Get ( apiで取得したデータ ; "coord" ) ; "lon"」 で取得できるのですがweather内には配列があり、こちらのデータを取得する方法が分かりません。
何かいいアドバイスを頂けますと幸いです。宜しくお願い致します。

Offline

#2 2016-04-22 11:12:36

scripter
Guest

Re: スクリプトでのjson内の配列の取得

カスタム関数の内容については定義を書いてもらわないとコメントできませんが。
FMの変数は配列に対応してますから、配列のまま取得できるのでは?
#Get ( apiで取得したデータ ; "weather" )

#3 2016-04-22 12:58:59

グラ
Member

Re: スクリプトでのjson内の配列の取得

返信いただきありがとうございます。
現在のスクリプトはこちらのサンプルデータを元に修正を行っていました。
http://qiita.com/hajisan/items/61cc281a1b410c8cb179

#Getは(Parameters ; name)で動作を行っています。
また、この前に以下のスクリプトでjsonファイルを取得しています。
URLから挿入 [ 選択 ; ダイアログなし ;  gjSON_RES ; "openweathermapのURL"
スクリプト実行 [ 「JSON-FM (jsonEncodedText )」
変数を設定 [ $json ; 値: Get ( スクリプトの結果 ) ]

このカスタム変数で #Get ( #Get ( $json ; "coord" ) ; "lon"
とすると通常のオブジェクトは取得できますが

weatherの中にある配列の中のオブジェクト、idを取得したい場合
#Get ( #Get ( $json ; "weather" ) ; "id"
としても値が取得できておらずこのidの値の取得方法をご教示頂けないかということです。

何卒宜しくお願い致します。

Offline

#4 2016-04-23 00:06:00

ななし
Guest

Re: スクリプトでのjson内の配列の取得

[] を {} に置き換えたらいいだけちゃうん?

#5 2016-04-23 02:54:40

Hiro
Member

Re: スクリプトでのjson内の配列の取得

json(JavaScript Object Notation の略)はJavaScriptのデータ記述形式だから、JavaScriptで解析させるのがベストでは?

その場合、単純にJSONを返しても、クロスドメイン内のJavaScriptで処理することはできませんが、JSONPを返せば、JavaScriptで受け取って、そのcallback関数で解析処理ができます。
詳しくは、「JSONP」でググって、専門解説ページを参考ください。

Last edited by Hiro (2016-04-23 04:55:31)

Offline

#6 2016-04-25 10:04:57

qb_dp
Member

Re: スクリプトでのjson内の配列の取得

Modular FileMaker | JSON : http://www.modularfilemaker.org/module/json/
チラッと見てみましたが、入れ子の配列には対応してないのかもしれませんね。(対応してたらすみません。)

参考まで、以下の様なモノもあります。
FileMaker WEBビューア経由でJSONデータにアクセス!(3) :
http://qbxxdp.blogspot.jp/2014/08/filem … json3.html

Hiro wrote:

JavaScriptで解析させるのがベストでは?

JavaScriptで解析です。

"weather" の部分は、
$weather.0.description 左記のFM変数に格納されます。
配列の場合、
$weather.1.description
$weather.2.description
...
で、取得することが出来ます。

Last edited by qb_dp (2016-04-25 10:06:38)

Offline

#7 2016-04-25 10:45:43

グラ
Member

Re: スクリプトでのjson内の配列の取得

お世話になっております。
暫定的な処置として、#Getで取得した後にPosition関数を使いapiのデータを取得致しました。
皆様ごご回答頂きありがとうございました。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 518.27 KiB (Peak: 523.17 KiB) ]