以下の内容はhttps://m-hiyama.hatenablog.com/entry/20100427/1272337446より取得しました。


JSONにバイナリデータ

「JSONスキーマ属性とその適用対象の一覧 2010年春・編」から引用:

僕は、JSONでもBase64エンコードのbinary型をネイティブ・サポートすべきだと思っています。XML Schema Part 2: Datatypes ではバイナリデータをサポートしてます(http://www.w3.org/TR/xmlschema-2/#base64Binary)。バイナリがあれば、"format" : "image/gif" のようなスキーマ属性指定にも意味を持たせられます。

JSONにバイナリデータを導入するとき、最初に問題になるのは「通常の(まったく拡張してない)JSONへのマーシャリング」です。

JSONにメタデータや特殊な構文構成素を記述するときは、ドル記号('$')で始まる名前のプロパティを使うことが、ある程度は慣例となっているので、この方法を使うことにします。次の形をバイナリデータの表現とします。

 {"$data" : "ここにテキストにエンコードしたバイナリデータ"}

最初僕は、バイナリデータの型を表すために $type というプロパティも考えていましたが、別な方法を採用します。プロパティ値に、data: URIスキーム(http://en.wikipedia.org/wiki/Data_URI_scheme)のURI文字列をそのまま使います。次にようになります。

 {"$data" : "data:image/jpeg;base64, ここにBase64エンコードしたバイナリデータ"}

メタデータとしての型は、プロパティ値の先頭に埋め込まれます。「data」という綴りの語が二回出てきて冗長ですが、この2つは役割が違います。$data はJSON処理系がバイナリデータを認識するための目印です。一方、値の先頭の data: は、この文字列がdata:スキームURIであることを伝えます。$dataプロパティの値を取り出して、それをそのままdata:スキームを理解できる処理系に渡せば、対応するバイナリオブジェクト(例えばJPEG画像)が得られるでしょう。

スキーマ定義の際には、JSONスキーマ属性formatが使えます。本家JSONスキーマ構文なら、次のような記述となります。

{
  "type" : "binary",
  "format" : "image/jpeg"
}

Catyスキーマ構文なら:

 binary(format = "image/jpeg")



以上の内容はhttps://m-hiyama.hatenablog.com/entry/20100427/1272337446より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14