PlistのDate型とData型(Base64)のJSON変換
plistのdate要素とBase64エンコードされたdata要素がJSONでどのように表現されるか、またコンバーターがこれらの特殊型をどう処理するかを学びます。
Basic Types
詳細な説明
特殊なPlist型:DateとData
Plist XMLには直接的なJSON対応がない2つの型があります:ISO 8601タイムスタンプ用の<date>とBase64エンコードバイナリコンテンツ用の<data>です。
Plistの例
<dict>
<key>CreatedAt</key>
<date>2025-06-15T14:30:00Z</date>
<key>ModifiedAt</key>
<date>2025-12-01T09:00:00Z</date>
<key>IconData</key>
<data>
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJ
AAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5E
rkJggg==
</data>
</dict>
JSON出力
{
"CreatedAt": "2025-06-15T14:30:00Z",
"ModifiedAt": "2025-12-01T09:00:00Z",
"IconData": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
}
日付の処理方法
plistからJSONへの変換では、<date>値はISO 8601文字列になります。JSONからplistへの変換では、コンバーターはISO 8601パターン(YYYY-MM-DDTHH:MM:SS)に一致する文字列を検出し、自動的に<date>タグで囲みます。非ISO日付文字列は<string>のままです。
データの処理方法
<data>にはBase64エンコードされたバイナリが含まれます。JSONではプレーン文字列になります。逆変換ではBase64コンテンツを自動検出しません。これは多くの通常の文字列が有効なBase64であるためです。出力に<data>が必要な場合は、結果を手動で調整する必要があります。
ユースケース
作成タイムスタンプ、変更日、またはアイコンや証明書などの埋め込みバイナリリソースを含むplistファイルを扱う際に重要です。macOSバンドルリソースやプロビジョニングプロファイルでよく見られます。