Deno で JSON ファイルを読み込んで、JavaScript のオブジェクトとして参照できるようにするには、import
で直接インポートする方法と、Deno.readTextFile
で読み込んでから JSON.parse
する方法があります。
ここでは、それぞれの方法で次のような JSON ファイルを読み込んでみます。
JSON モジュールとしてインポートする方法
Deno では、import
文で JSON ファイルを直接インポートできるようになっています。
JSON ファイルをインポートするときは、import assertions の機能を使って、JSON ファイルであることを明示する必要があります。
import 文で静的インポート
この方法では JSON ファイルが静的に読み込まれるため、次のような恩恵があります。
- JSON データから TypeScript の型情報を推測してくれるので、VS Code などで入力補完が効きます。
deno run
でのプログラム実行時に、--allow-read
を付加する必要がありません。
import 関数で動的インポート
import
文の代わりに import
関数を使うと、動的に JSON ファイルを読み込むことができます。
ただし、動的に読み込む場合は、プログラムの実行時に --allow-read
フラグが必要です。
$ deno run --allow-read main.ts
URL で JSON ファイルを指定する
Web 上で公開されている JSON ファイルを URL で指定してインポートすることもできます。
次の例では、気象庁が公開している東京 (=130000) の天気予報を取得しています。
初期状態では TypeScript の型情報が認識されませんが、一度プログラムを実行するか、次のように deno cache
コマンドで明示的に JSON ファイルをキャッシュすることで補完が効くようになります。
$ deno cache https://www.jma.go.jp/bosai/forecast/data/overview_forecast/130000.json
Deno.readTextFile で読み込む方法
Deno API の Deno.readTextFile
で JSON ファイルを通常のテキストファイルとして読み込んでから、JSON.parse
でパースする方法です。
JSON.parse
の戻り値は any
型なので、TypeScript の型情報は自分で定義する必要があります。
動的に JSON ファイルを読み込むので、プログラムの実行時に --allow-read
フラグの指定が必要です。
関連記事