Jsonnet フォーマッタ&評価器
ガイド
Jsonnet フォーマッタ&評価器
Jsonnet ソースを入力ボックスに貼り付け、完全に評価された JSON 結果を取得するか、ソース自体を整形できます。このツールはブラウザ内で実行されるため、あなたの設定はページから離れません。Kubernetes マニフェスト、Grafana ダッシュボード、Tanka 環境、または他の Jsonnet で表現された設定アセンブリのプレビューに便利です。
使用方法
- 入力ボックスに Jsonnet コードを貼り付け、または
.jsonnet/.libsonnetファイルをアップロードしてください。 - ピック 評価 → JSON を実行して結果を計算するか、 Jsonnet ソースをフォーマット を実行して整形されたソースを一貫したインデントで再表示します。
- 好みのインデントを選択(2スペース、4スペース、タブ、またはミニマライズ)。
- オブジェクトのキーをアルファベット順に並べ替えることもできます。また、トップレベルが単純な文字列になる場合に、文字列出力に強制することもできます。
- 結果をワンクリックでコピーするか、または
.json/.jsonnet.
機能
- ライブ評価 – タイプ中に Jsonnet ソースがパースされ、評価され、レスポンス性のために更新がスロットリングされます。
- オブジェクト継承 –
+:,::と、:::フィールド演算子の完全なサポートに加え、selfとsuper参照を検出します。 - コンプリヘンション – 配列
[expr for x in xs if cond]およびオブジェクト{[k]: v for k in keys}コンプリヘンション。 - 関数とクロージャー – テンプレートおよびインライン関数に位置、名前、およびデフォルト引数をサポート。
- 標準ライブラリのサブセット – 一般的な
std.*ヘルパー、およびその他。std.map,std.filter,std.foldl,std.range,std.join,std.sort,std.objectFields,std.mergePatch,std.formatフォーマット文字列 - – Python スタイルの フォーマットは、正確に期待通りに動作し、精度および幅指定子を含む。
%場所付きエラーメッセージ - – パースおよび実行エラーは、行と列を報告し、問題をすぐに見つけられます。 プライバシー設計
- – すべてがブラウザ内で実行され、サーバーに送信されません。 Jsonnet を使うタイミング
Jsonnet はデータテンプレート言語で、JSON にコンパイルされます。類似した JSON または YAML を大量に生成し、コピー&ペーストによるダブルを避ける必要がある場合に特に有用です。典型的な用途には、多くのリソースがボイラープレートを共有する Kubernetes デプロイメント、繰り返しパネルテンプレートを持つ Grafana ダッシュボード、CI パイプライン定義、環境ごとにわずかに異なる特徴フラグや設定バンドルが含まれます。
このブラウザ内評価器はファイルシステムを持たないため、
制限事項
はサポートされません。フォーマッターはコメントを保持しない、なぜなら AST から作動するためです。標準ライブラリは一般的なケースをカバーしています — 専門的なヘルパーに頼る場合は、最終出力のために公式の import, importstrと、 importbin バイナリを実行してください。 jsonnet 何が Jsonnet で、JSON との関係性は?
よくある質問
-
Jsonnet は小さな、純粋関数型の設定言語で、JSON の厳密なスーパーセットです。すべての JSON ドキュメントは Jsonnet プログラムとして有効ですが、Jsonnet は変数、関数、条件分岐、算術、文字列の埋め込み、オブジェクト継承を追加します。プログラムは純粋な JSON に評価され、出力はすべてのシステムが既に理解しているものになります。
なぜ Jsonnet は単にコメント付きの JSON ではないのか?
-
JSON には抽象化メカニズムがなく、類似ドキュメントはコピー&ペーストされ、時間とともにズレが生じます。Jsonnet はローカル、関数、オブジェクト継承を導入し、共有構造を一度定義して再利用できます。この言語は決定論的で副作用がなく、同じ入力が常に同じ JSON を生成します — これは再現可能なインフラに有用です。
Jsonnet のオブジェクト継承における +: 演算子は何をしますか?
-
Jsonnet では、
フィールド演算子は、親オブジェクトの同じ名前のフィールドとマージし、それを上書きするのではなくします。数値および文字列のマージは加算または連結、配列は連結、オブジェクトは深層マージです。これにより、派生オブジェクトは親の値を拡張することができ、これはレイヤー構成ライブラリの核心メカニズムです。
+:Jsonnet における self と super の違いは? -
は現在構築中のオブジェクトを指し、その後の上書きを含むので、
selfは常に最終的な値を取得します。self.xは継承チェーンの親を指し、x.superは現在のオブジェクトの上書きが適用される前に値を取得します。この2つは遅延バインディング(viasuper.x)および継承値への明示的なアクセス(viax)を可能にします。selfJsonnet 評価は、Helm または Jinja といったテンプレート言語とどう異なりますか?super). -
テンプレート言語は文字列置換によってテキストを生成し、出力構造がJSONまたはYAMLとして有効であるとは保証されません。Jsonnet はタイプ付き表現木をJSON値に評価し、構文の正確性を評価時に強制し、エラーは元の表現に指し示します。代わりに、Jsonnet は独自のセマンティクスを持つ本物の言語です。
ここに Jsonnet コードを貼り付けます...
恵 スコアボードが到着しました!
スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!
