JSONツール

TOMLからJSONに変換日付と整数の型を確かめてから出力

サンプルには通常のテーブル、サーバーの配列、大きなIDがあります。日付と安全範囲外の整数は文字列になります。

TOMLからJSONに変換

JSONからTOMLへ

TOML入力

このブラウザー内で処理します。入力を送信・保存しません。

JSON結果

出力設定

型の対応プレビュー

結果が古いため、書き出しできません。

TOMLからJSONに変換すると、設定ファイルをJSON対応のAPIやテストデータに渡せます。セクション名はオブジェクトの階層に、二重角括弧の[[table]]見出しはオブジェクトの配列になります。

TOML設定ファイルの変換だけで、CargoやPoetryの設定項目が正しいと判断することはできません。ここではデータの構造と型を扱い、アプリケーション固有の意味や依存関係は評価しません。

TOMLからJSONに変換するときに確認したい点

テーブルの所属先を見失わない

TOMLからJSONに変換する前に、各テーブルのスコープを解析します。[[servers]]の子テーブルは現在の配列要素に属し、引用された"api.version"は階層を増やさず一つのキーとして残ります。

名前の付いたテーブルが入れ子のオブジェクトに、二つの反復セクションが二要素の配列になる図。

変わった型をパスで追える

プレビューには数値、整数から文字列、日付から文字列、nullへの置換を分けて表示します。大きな出力でもJSON Pointerと型の件数を見れば、受け取り側のスキーマと合うか確認できます。

カレンダー値と長い識別番号が、それぞれ引用符付きの文字列フィールドになる図。

受け取り側に合わせて方針を決める

01

IDを文字列として渡せるか確認

±9007199254740991を超える整数は、既定で十進文字列になります。数値型が必須なら拒否を選び、変換を止めて扱いを検討してください。符号付き64ビット範囲外の整数は常に拒否します。

02

非有限数を欠損値にしてよいか決める

TOMLではinfやnanを記述できますが、JSONの数値にはありません。既定は拒否です。nullを明示的に選んだ場合だけ置換し、浮動小数点のオーバーフローも同じ方針で処理します。

03

再計算を待ってから取り出す

自動変換は変更から350ミリ秒後に動きます。無効にすると変換ボタンかCtrl/Cmd+Enterを使えます。入力や設定が変わると出力操作を無効にし、プレビューは50件ずつ、最大500件まで表示します。

テーブルと値をどう対応させるか

配列の中の子テーブル

通常のテーブルとドット区切りキーは入れ子のオブジェクトになります。テーブル配列は順序を保ち、子テーブルは現在の親要素に付きます。空テーブルは{}、空配列は[]、混合型の配列もそのままです。

整数を丸めずに読み取る

整数をまずBigIntで解析し、安全範囲を調べて出力型を決定します。16進・8進・2進表記や桁区切りは十進表記に統一します。大きな整数を文字列にする場合は、桁を浮動小数点数に丸めません。

四種類の日時を区別

オフセット付き日時は元のオフセットを残します。ローカル日時にタイムゾーンは追加せず、日付だけ・時刻だけの形も保ちます。時刻の精度はミリ秒までで、それより細かい小数秒は切り捨てられます。

行・列とデータのパス

構文エラーには入力の行・列を表示して該当行を強調します。数値方針によるエラーにはJSON Pointerを表示します。パス中の/は~1、~は~0となり、特殊文字を含むキーも区別できます。

元の表記と検証範囲の限界

厳密な日付検証とは異なる
smol-toml 1.8.0を使い、TOML 1.1を対象とします。ただし2023-02-30が2023-03-02になるなど、一部の無効な日付は正規化されます。不正なUnicodeをすべて拒否するわけでもありません。
浮動小数点数の精度
IEEE 754の丸めがあり、小さすぎる値は0になることがあります。1.0は1、負のゼロは0として出力します。無限大、nan、オーバーフローは選択した方針で拒否するかnullにします。
コメントや字句は残らない
コメント、空白、引用符の形式、進数、数値の元の綴りは消えます。キー順序も保証しません。JSONには日付型がなく、大きな整数も文字列になるため、完全に元通りになる往復変換ではありません。
一つのテキストに上限を設定
入力は500,000文字、深さ100、50,000ノードまで、出力は2,000,000文字までです。ファイル読込、URL取得、一括処理、履歴保存はありません。コメントだけの文書は{}になります。
自動修復や設定移行はしない
重複キーや構文の誤りは失敗として扱います。項目の削除、並べ替え、CargoやPoetryのスキーマ検証はしません。逆方向のリンクは別ツールを開くだけで、現在の内容を自動送信しません。

TOMLからJSONに変換する際の質問

TOMLとJSONを往復変換できますか?

逆方向は別のJSONからTOMLへのツールで扱います。TOMLからJSONに変換すると日付は文字列になり、コメントや数値の表記も失われるため、往復して元の文書が復元されるとは限りません。

TOMLの構文も確認できますか?

TOML JSON変換の前に構文を解析し、失敗した行と列を示します。ただし完全なTOMLバリデーターではなく、日付やUnicodeの既知の例外があります。アプリケーションの設定項目の妥当性も別途確認してください。

対応するTOMLのバージョンは?

smol-toml 1.8.0を使用し、TOML 1.1を対象にします。複数行のインラインテーブルなども解析しますが、実装の制限があります。日時はミリ秒精度で、一部の無効な日付が正規化されます。

変換でコメントが消えるのはなぜ?

JSONのデータモデルにはコメントがありません。解析後に値と構造から出力を作るため、コメントの場所や内容、元の空白は引き継ぎません。説明文が必要なら元の設定ファイルも保管してください。

日付が文字列になるのはなぜ?

JSONには日時型がないためです。ローカル日時に勝手に時差を付けず、明示されたオフセットは保ちます。ただし小数秒はミリ秒までです。文字列を日時として読む方法は受け取り側で決めてください。

想定と異なる変換結果がありましたか?

次の設定でも型を確認

TOMLからJSONに変換して、サンプルの日付や大きなIDがどの型になるか確かめてから、自分の設定を試してください。