mygems

JSON Editor: Smart Json

1つのJSONを、すべて編集できる3つのビューで。

  • エディタ・ツリー・グラフ
  • リアルタイムJSONPath
  • 構造diff
  • オフライン・アカウント不要

作った理由

スマートフォンのJSONアプリの多くは、エディタを名乗るだけのビューアで、整形と折りたたみができる程度です。Smart Jsonは、他にはないビューから出発しました。キー、型、値をタップして変更できるノードリンクのグラフです。そのうえで、テキストを唯一の正とすることで整合性を保ちます。3つのビューのどれで編集しても、残りの2つが追従します。文書とずれるビューは、ないほうがましだからです。

5つのスマートフォン画面。APIレスポンスをノードリンクのグラフで表示、同じ文書をアウトラインのツリーで表示、グラフ上に開いたインラインのノードエディタ、2つのノードに一致するJSONPathのフィルター式、アウトライン上でキーの名前を変更しているところ。

3つの連動ビュー、正は1つ

同じ文書を、構文ハイライト付きエディタ、折りたたみ可能なツリー、操作できるグラフで表示します。3つとも編集できます。正となるのはテキストで、ツリーやグラフでの編集はテキストに再シリアライズされるため、ずれが生じません。

エディタ

  • 入力した部分だけを再トークン化する構文ハイライトで、動作は軽快です。
  • 行番号、折り返し、フォントサイズの設定。
  • キーボード上の記号バー: 波括弧、角括弧、引用符、true、false、null、インデント、元に戻す、やり直し。
  • 不正なJSONは、問題の内容と行・列を示すわかりやすいバナーで表示します。
  • 「移動」でその位置にカーソルを移し、「修正」でコメント、末尾のカンマ、シングルクォート、引用符なしのキーを直せます。

ツリー

  • インデントガイド、型バッジ、子要素の数を表示する折りたたみ式のアウトライン。
  • キーと値を横断して検索し、型で絞り込み。
  • ノードをその場で編集: 名前の変更、型の変更、並べ替え、複製、追加、削除。

グラフ

  • 左から右、または上から下に整列するノードリンク図。
  • ピンチでズーム、パン、タップでノードを展開、画面に合わせて表示。
  • ノードをタップすると、そのすぐ下にエディタが開きます。グラフは閲覧だけでなく編集もできます。
  • すべて展開、指定の深さまで展開、1つのサブツリーだけ展開。
  • グラフをPNGまたはSVGで書き出し。

必要なものを探す

  • どのビューにも検索バーがあり、エディタでは大文字小文字の区別や末尾から先頭への循環検索ができます。
  • ツリーとグラフでは構造検索に対応。範囲や型で絞り込み、一致箇所を順に移動できます。
  • JSONPathはリアルタイムで評価され、一致箇所をエディタ、ツリー、グラフに同時に色付けします。
  • フィルター式を含む、RFC 9535のサブセットに対応(仕様は文書化されています)。

比較と変換

  • 開いている文書を、ファイル、クリップボード、URLと比較できます。
  • テキストではなく構造を比較するので、整形し直しただけでは変更になりません。
  • 変更のあったサブツリーはグラフ上で色付けされ、配列の要素は識別できる場合に同一性で対応づけます。
  • YAML、CSV、TOML、XMLのプレビューを表示。各形式で表現できないものも明記します。

JSONの読み込みと書き出し

  • iCloud DriveやファイルからJSONを開き、開く、保存、名前の変更を正式にサポート。
  • クリップボードやURLから文書を作成でき、リクエストに独自のヘッダーも付けられます。
  • 共有機能拡張により、どのアプリからでもJSONを受け取れます。JSON5ファイルも開けます。
  • 整形、圧縮、キーの並べ替え、自動修正、JSON文字列リテラルのエスケープとアンエスケープ。
  • すべての操作を元に戻す・やり直しでき、履歴は文書ごとに1つで、すべてのビューで共有されます。

しっかり作っています

iPhoneとiPad向けのネイティブSwiftUIアプリで、キーボード操作に完全対応し、ライトモードとダークモードに対応しています。自作のパーサーがキーの順序を保ち、数値リテラルも書かれたとおりに保持するため、往復しても何も失われません。完全にオフラインで動作し、アカウントもサインインも解析もなく、データが端末の外に出ることはありません。

よくある質問

グラフでも編集できますか?閲覧だけですか?
編集できます。ノードをタップすると、そのすぐ下にエディタが開き、キー、型、値の変更、子要素の追加、ノードの削除ができます。グラフでの編集はテキストに再シリアライズされるので、エディタとツリーも同期します。
3つのビューがずれることはありませんか?
ありません。正となるのはテキストだけで、ツリーやグラフでの編集もテキストに再シリアライズされるため、ほかの2つのビューも常に同じ文書を表示します。
JSONPathに対応していますか?
はい。式を入力するとリアルタイムで評価され、一致箇所をエディタ、ツリー、グラフに同時に色付けします。フィルター式を含む、RFC 9535のサブセットに対応しています。
diffは何を比較しますか?
テキストではなく構造を比較します。開いている文書を、ファイル、クリップボード、URLと比較でき、整形し直しただけでは変更とみなされません。変更のあったサブツリーはグラフ上で色付けされ、配列の要素は識別できる場合に同一性で対応づけます。
どの形式に変換できますか?
YAML、CSV、TOML、XMLに対応し、各プレビューでその形式で表現できないものを明記します。グラフはPNGまたはSVGでも書き出せます。
無料の範囲とProの範囲は?
すべての機能は、計算と結果の表示まで無料です。Proは結果を残すための機能で、JSONPathの一致結果を新しい文書に抽出、クエリ履歴と保存済みクエリ、パッチ書き出し付きのテキストdiff、変換結果の保存と共有が対象です。