MacなしでXML plistをJSONに(逆も)変換する
Info.plist・.mobileconfigプロファイル・Apple設定のダンプ — XML plistを編集可能なJSONに変換します。バイナリplistは拒否されるため、先に `plutil -convert xml1` でXMLへ変換してください。
このガイドで使う道具
やりたいこと
アプリバンドルからplistを取り出してJSONにしたい、あるいはplistを生成したいがJSONしかない。AppleはXMLとバイナリの両形式を使いますが、この変換が読むのはXML形式(Xcodeが書くテキスト形式)です。plutilはmacOSにはありますが、作業中の環境にあるとは限りません。
どちら向きでも
plist XMLを入力に貼ります — テキストを入れてテキストが出るだけで、ファイルのアップロードはありません。辞書・配列・文字列・数値・真偽値がマッピングされたJSONが出て、<date>は {"$date": "ISO-8601"}、<data>は {"$data": "base64"} になります。
- XML入力は4MiBまでローカルでパースします — それを超える入力はサイズエラーで拒否します。
- 60レベルを超えるネストは拒否します — 実際のAppleのplistは十数レベル程度です。
- バイナリplist(`bplist00`で始まるもの)は拒否します — Macでは `plutil -convert xml1 file.plist` で先にXML形式へ変換してください。
plistに戻す
JSON→plistはXML形式で出力します(Appleツールと人間の両方が読める形式)。JSONのルートはオブジェクトまたは配列にしてください — plistのルートはdictかlistです。{"$date": "…"} と {"$data": "…"} の印を残せば実際の <date>/<data> 要素に戻ります。裸のISO文字列は文字列のまま、JSON nullは空文字列になります — plistにnullはありません。