分析と広告のためのCookie
分析と広告のためにCookieを使っており、どちらもGoogleに送られます。拒否しても、目に見える動作は何も変わりません。プライバシーポリシーを読む
ここで NDJSON を INI に変換できます。無料、アカウント不要です。ファイルを上の枠に落とせば、数秒で結果がダウンロードできる状態になります。 変換はお使いのブラウザーの中で行われるので、ファイルはアップロードされません。Windows でも macOS でも Linux でも、iPhone でも Android でも同じように動き、通信を切っても動き続けます。
一度に100ファイルまで。フォーマットが混ざっていても構いません。
順番に変換し、まとめてZIPでダウンロードします。
NDJSON から INI
INI ファイルは名前の付いたセクションの集まりで、それぞれの中に平らなキーと値が並びます。たいてい 1 つのアプリケーションの設定を表すためのものです。改行区切りの JSON は、名前も意味のある順序も決まった長さもないレコードの並びです。両方を同時に満たす表現はありません。
そこでこの変換は、並びの中にあるレコードが唯一持っている名前——位置——を使います。1 行目は [0]、2 行目は [1] というように。これは何も失わない忠実な変換ですが、セクション名にはまったく意味がありません。
レコードが本当にいくつかの設定——ホストごと、環境ごと、テナントごと——を表しているなら、[0] や [1] をそれぞれの本来の名前に付け替えるだけで使える設定ファイルになります。中のキーはすでに正しい形です。
レコードがデータであって設定でないなら、名前を付け替えても解決しません。何百もの番号だけのセクションは設定ファイルではなく、間違った記法で書かれた表です。CSV、JSON、あるいはデータベースがその内容にふさわしい行き先で、どれも同じ元ファイルから一回の変換で得られます。
ここで多くの人がつまずきます。ちょうど 1 行のファイルでも、それは要素が 1 つの並びであることに変わりなく、結果は 1 つのレコードの全フィールドを収めた [0] セクションです。同じオブジェクトを単独で変換したときのような、きれいな INI にはなりません。
直すべきは出力ではなく元の形式です。その 1 行を .json という拡張子で保存し、JSON から INI への変換を使ってください。そちらではレコードのトップレベルのキーがそのままセクション見出しになり、人が書いたような体裁になります。同じデータが別の入口を通るだけで、十秒で済みます。
INI が持てる階層はセクションまでで、その中にさらにセクションは作れません。ここではその一段階をレコード番号がすでに使っているので、入れ子を含むレコードの全フィールドはキー名の中に押し込まれます。
server オブジェクトの中に port を持つレコードは、番号セクションの中に server.port という行になります。何も失われず経路もそのまま保たれますが、同じ構造を持つ二つのレコードは、キーの綴りが同じであるという以外に何も構造を共有しません。ドット区切りのキーから入れ子を組み立てるパーサーは、セクションごとに個別に組み立て直すことになります。
許可されたホストの一覧を持つレコードは、そのフィールドのパスの下に 0、1、2 という名前のキーを作ります。番号セクションと組み合わさると、[2] という名前のセクションの中に hosts.0 という行がある、といった読みにくい結果になります。
配列に対応する INI パーサーは、たいていカンマ区切りの値を 1 行で書く形式を期待します。ここで出てくる形式とは違います。決まった書き方があるなら、変換する前に元データで配列を 1 本の文字列に結合しておくほうが、あとから全グループを手作業で直すより楽です。
JSON の true は true、数値はその数字、null は等号の後ろに何も書かない形、文字列はそのままです。引用符が付くのは、そうしないと値がそのままの意味で戻ってこない場合だけです。前後に空白がある値、すでに引用符で始まり終わっている値、改行を含む値です。
改行を含む値だけは書き添える価値があります。INI の 1 行は 1 エントリなので、実際の改行ではなく引用符の中でバックスラッシュと n として書かれます。証明書や鍵、埋め込みスクリプトが典型的な例で、これで往復はできるようになりましたが、その大きさの値は本来別ファイルに置き、INI にはそのパスだけを書くのが多くのアプリケーションの流儀です。
INI もセミコロンやシャープで始まるコメントに対応していますが、JSON にその仕組みはありません。なぜこの設定を固定しているか、どちらの値が意図的か、どの数値が何に由来するか——そうした説明は元のデータになく、この変換で書き足されることもありません。
INI をわざわざ作る理由はほとんどの場合、人がそれを読んだり編集したりするためなので、それらの行を書くことが最初にすべき有意義な編集になります。
正直な目安はこうです。出てきた結果に番号だけのセクションが数個以上あり、それぞれに本当の名前を付けられないなら、この変換は聞かれたのとは別の問いに答えています。INI は 1 つのものを説明する形式で、レコードの並びは 1 つのものではありません。
同じファイルから一クリックで届く選択肢のほうがたいてい向いています。人が中身を見るなら CSV や表計算ソフト、機械が問い合わせるなら SQL や Parquet、設定ファイルとしてレコードの並びが欲しかったのなら TOML です。TOML には配列テーブルという、INI にはない仕組みがあります。
変換はこのブラウザーのタブの中で動く JavaScript です。何もアップロードされず、アカウントも順番待ちもなく、無料枠は 100 MB まで受け付けます。設定ファイルがこの上限に届くことはまずありません。
ファイルの大きさが示す以上に、これは重要な点です。設定のダンプには接続文字列、API のエンドポイント、内部のホスト名、そして本来は環境変数であるべきだった資格情報が入っていることが珍しくありません。中括弧を外すためだけに、それをどこかのサーバーへ送るのは割に合いません。
| NDJSON | INI | |
|---|---|---|
| 正式名称 | Newline-Delimited JSON | INI 設定ファイル |
| 拡張子 | .ndjson, .jsonl | .ini, .cfg, .conf |
| メディアタイプ | application/x-ndjson | text/plain |
| 最初の公開 | 2013 | 1985 |
| ライセンス | オープン標準 | オープン標準 |
| 現在の位置づけ | 現行 | 旧式、ただし今もどこでも読める |
| ブラウザで開けるか | 対応なし | 対応なし |
| 代わりに検討される形式 | JSON, CSV | TOML, YAML |
開くプログラムが重なりません。NDJSON はjqとpandasで、INI はNotepadとVisual Studio Codeで開きます。結果を渡す相手には後者のどれかが要ります。
2 つは狙っている用途が違います。NDJSON はプログラム間のデータ受け渡しとストリーミング、INI は編集です。ここは考える価値があります。一方が存在する理由が、そのままもう一方が使いにくい理由になっていることが多いからです。
INI は 1985 年から使われています。NotepadとVisual Studio Codeがこの形式を読めます。
INI は 1985 年、NDJSON は 2013 年に登場しました。人に渡すならたいてい古いほうが安全で、新しいほうは同じ仕事をより少ないバイト数で片づけます。
いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。
はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。
NDJSON と INI は、内容の表し方が根本から違います。ですからこの変換は複製ではなく再構築です。誠実ではありますが、1 バイトも同じというわけではありません。 INI に入れ子はありません。1 階層より深い構造は、ドットでつないだキーに平らにされます。
変換には要りません。すでに開いているブラウザーの中で行われます。そのあと結果を開くには、お使いの端末がふだん INI Configuration を表示するのに使っているソフトが必要です。