多くのモダンなツールは、特に設定管理やInfrastructure as Code (IaC) の領域では、JSONやYAMLファイルを使用して設定データを保存します。YAML形式のデータをJSON形式に変換する必要がある場合、この記事が役立ちます。
この記事では、Python、PowerShell、Goでのスクリプト作成を含む、YAMLからJSON形式にデータを変換するためのいくつかの方法を学びます。
前提条件
このチュートリアルの例に従いたい場合は、以下の要件を満たしていることを確認してください。
- A code editor. This article will use Visual Studio Code version 1.55.1. Feel free to use any code editor you want.
- YAMLからJSONに変換するためには、サンプルのYAMLコンテンツが必要です。以下の内容をoperating-systems.ymlという新しいファイルにコピーしてください。YAMLファイルを作業ディレクトリに保存します。
YAMLをJSONに変換するためのPythonの使用方法
Pythonは自動化に使用するには優れた言語です。しかし、Pythonの機能を拡張し、YAMLからJSONにドキュメントを変換することができることを知っていましたか?そして、わずかな手順を実行するだけで、すぐにYAMLからJSONに変換を開始できます。
このセクションの例では、Python 3.9とPIP(この執筆時点での最新バージョンは21.0.1です)をインストールしている必要があります。
PythonへのYAMLのサポートの追加
Pythonには、デフォルトではYAMLのサポートがありません。つまり、PythonはデフォルトではYAMLドキュメントを読み取ったり解釈したりすることができません。PythonにYAMLのサポートを追加するには、まずPyYAMLモジュールをインストールする必要があります。
PyYAMLモジュールをインストールするには、Pythonのパッケージインストーラであるpip
コマンドを実行する必要があります。以下の手順に従ってください。
まず、コマンドプロンプトやPowerShellなど、お好みのコマンドインタープリタを開きます。どちらのインタープリタでもpip
コマンドが動作するはずです。この例ではPowerShellを使用します。
次に、PowerShellで以下のコマンドを実行します。このコマンドはPyYAMLモジュールをインストールします。
以下のスクリーンショットで確認できるように、pip
はPyYAMLの最新バージョン(この執筆時点でのバージョンは5.4.1)をインストールしました。

変換スクリプトの作成
必要なモジュール(PyYAML)をインストールしたので、変換スクリプトを作成する準備が整いました。YAMLからJSONへのPythonスクリプトを作成するには、以下の手順に従ってください。
1. コードエディタを開き、作業ディレクトリにconvert-os.pyという名前の新しいファイルを作成します。このファイルがスクリプトです。
2. 下記のコードをコピーして、空のconvert-os.pyファイルに貼り付けます。このスクリプトは、operating-systems.ymlのYAMLコンテンツを読み取り、コンテンツをJSON形式に変換し、JSON出力をpython_operating-systems.jsonファイルに書き込みます。
3. convert-os.pyスクリプトを保存します。
変換スクリプトの実行方法
変換スクリプトを作成したら、テストしてみましょう。以下の手順でYAMLからJSONへのPythonスクリプトを実行します。
1. ターミナルウィンドウを開きます。この記事ではPowerShellを使用していますが、コマンドプロンプト(CMD)でも同じように動作します。
2. 以下のコマンドをコピーしてPowerShellに貼り付け、Enterキーを押して実行します。このコマンドは、前のセクションで作成したconvert-os.pyスクリプトを呼び出すためにPython
実行可能プログラムを実行します。コマンドを実行すると、以下のような画像の出力が表示され、同じ出力がc:\temp\python_operating-systems.jsonファイルに保存されます。
実行したコマンドの後、同じ画像のような出力が表示されるはずです。 コマンドはJSONの出力を画面に表示し、同じ出力をc:\temp\python_operating-systems.jsonファイルに保存します。

3. 最後に、python_operating-systems.jsonという名前のJSONファイルを開きます。この例では、メモ帳でファイルを開くために、PowerShellで以下のコマンドを実行します。

PowerShellを使用してYAMLをJSONに変換する
PowerShellはテキストファイルを変更したり、オブジェクトをJSONなどの複数の形式に変換したりすることができます。PowerShellは拡張可能なため、適切なモジュールを使用してYAMLをJSON形式に変換することができます。
PowerShellにYAMLサポートを追加する
PowerShellにはJSONコンテンツを扱うための組み込みサポートがありますが、YAMLにはありません。幸いなことに、PowerShellを拡張してYAMLファイルをサポートするモジュールがあります。このモジュールはPowerShell-yamlと呼ばれ、この文章を書いた時点での最新バージョンは0.4.2です。次の手順に従ってモジュールをインストールしてください。
1. コンピューター上でPowerShellセッションを開きます。
2. 以下のコマンドをコピーしてPowerShellに貼り付け、Enterキーを押します。このコマンドは、Install-Module
コマンドレットを使用してPowerShell-yamlモジュールをインストールします。
3. モジュールをインストールした後、PowerShell-yamlモジュールの一部として、2つの新しいコマンドレットがPowerShellで利用可能になります。これらの新しいコマンドレットは次のとおりです:
ConvertFrom-Yaml
– YAMLデータをハッシュテーブルに変換するためのコマンドレットです。
ConvertTo-Yaml
– ハッシュテーブルオブジェクトをYAMLデータに変換するためのコマンドレットです。
PowerShellで両方のコマンドレットが利用可能かどうかを確認するには、以下のコマンドをPowerShellで実行してください。
下記のように、Get-Command
コマンドレットは、PowerShell-yamlモジュールからのコマンドレットをリストアップしました。

変換スクリプトの作成
YAMLからJSONへの変換PowerShellスクリプトを作成するには、以下の手順に従ってください。
1. コードエディタを開き、作業ディレクトリにconvert-os.ps1という新しいファイルを作成します。
2. 下記のコードをコピーして、空白のconvert-os.ps1ファイルに貼り付けます。以下のコードスニペットは、operating-systems.ymlファイルを読み取り、JSONに変換します。JSON形式に変換された後、JSONをPowerShell_operating-systems.jsonファイルに保存します。
3. convert-os.ps1ファイルを保存します。
変換スクリプトの実行
変換スクリプトを作成したので、次のステップはYAMLからJSONに変換するために実行することです。PowerShellの変換スクリプトを実行するには、以下の手順に従ってください。
- まだ開いていない場合は、PowerShellウィンドウを開きます。
2. 以下のコマンドをコピーしてPowerShellに貼り付け、Enterキーを押します。このコマンドは、前のセクションで作成したconvert-os.ps1
スクリプトを呼び出します。
3. スクリプトを実行した後、前のステップでconvert-os.ps1スクリプトが作成したJSON出力ファイルC:\temp\PowerShell_operating-systems.jsonを開きます。これを行うには、以下のコマンドをPowerShellで実行してPowerShell_operating-systems.jsonをメモ帳で開きます。

Goを使用してYAMLからJSONに変換する
PythonとPowerShellはどちらも高水準の言語です。高水準であるため、スクリプトの作成は容易になりますが、制御力が少し制限されます。一方、Goは低水準の言語であり、YAMLデータのインポートがより複雑になります。
このセクションの例では、Goを使用します。この執筆時点での最新バージョンはgo1.16.3です。Goをまだインストールしていない場合は、ダウンロードおよびインストールページを参照してコンピュータにインストールしてください。
GoにYAMLサポートを追加する
PowerShellとPythonと同様に、JSONサポートはGoのコアライブラリの一部ですが、YAMLは含まれていません。GoでYAMLサポートを追加するには、まずgo get
コマンドを使用してYAML.v3パッケージをインストールする必要があります。YAML.v3パッケージをインストールするには:
まず、コンピュータ上でコマンドプロンプトまたはPowerShellなど、使用するコマンドシェルを開きます。この例ではPowerShellを使用します。
次に、以下のコマンドをコピーしてPowerShellで実行します。このコマンドは、パッケージ名がgopkg.in/yaml.v3であるパッケージをダウンロードしてインストールします。

変換スクリプトの作成
YAMLからJSONへの変換Goスクリプトを作成するには、次の手順に従ってください。
1. コードエディタを開いて、作業ディレクトリにconvert-os.goという名前の新しいファイルを作成します。
2. 下記のコードをコピーして空白のconvert-os.goファイルに貼り付けます。このコードは、必要なパッケージをインポートし、いくつかのメモリ構造を定義し、YAMLファイルをインポートし、JSONに変換してc:\temp\go_operating-systems.jsonという名前のJSONファイルに書き込みます。
3. convert-os.goファイルを保存してください。
変換スクリプトの実行
Goスクリプトの実行には、スクリプトのファイル名に続いてgo run
コマンドを使用します。YAMLからJSONへの変換Goスクリプトを実行するには、次の手順を実行してください。
1. コンピュータ上で使用するコマンドシェルを開いてください。Windowsの場合、コマンドプロンプトまたはPowerShellのいずれでもgo
コマンドが動作します。この例ではPowerShellを使用してgo
を実行します。
2. PowerShellに入ったら、以下のコマンドをコピーしてPowerShellで実行してください。このコマンドはgo run
コマンドを呼び出してc:\temp\convert-os.goスクリプトを実行します。

3. スクリプトを実行した後、前の手順でconvert-os.goスクリプトが作成した出力ファイルC:\temp\Go_operating-systems.jsonを開いてください。この例では、Go_operating-systems.jsonをメモ帳で開きます。

結論
この記事では、Python、PowerShell、Goのスクリプトを使用してYAMLデータとファイルをJSONに変換する方法を学びました。YAMLからJSONへの変換の異なる方法を学んだので、どの方法をより多く使用すると思いますか?