変換プロトコルとしてのJson

.NET C#で書いたリッチクライアントと、Javaで書いたサーバロジック間のオブジェクト通信は、互いのシリアライズしたオブジェクトに互換性が無いので(当たり前だ)、XML over HTTP(SOAPに非ず)を使用している。
XMLを使用しているということは、プラットホーム間の変換に加えてオブジェクト<->XMLの変換が必ず必要になる訳で、これが非常に大きな処理になっている。

オブジェクトの交換はデータ層とロジック層でそのアーキテクチャを別にもっており、独自のO-Xマッピングフレームワークを内製して使用(.NETのXMLシリアライズと同様にアノテーションによりプロパティとエレメント(又はアトリビュート)を自動変換している)しているのだが、これらを同一アーキテクチャで実現できないだろうかと思って白羽を矢を立てているのがjsonである。

(rfc4627)The application/json Media Type for JavaScript Object Notation (JSON)
JSON - JavaScript Object Notation

仕様がオープンで記述が簡単であり、なんといってもHTTPでネットワークを流せること、システムで使う可能性がある殆どの言語での実装が提供されているのが良い。あと、XMLと同様にWebブラウザで直接扱うことのできる形式であることも強みだ。冗長であり、表現できるデータの型が限られているという弱点はあるが、この弱点はXMLが元々持っているものであり大してマイナス要因にはならないし、冗長なデータもHTTP/GZip圧縮が使えれば気にならない。

唯一気になっているのは日本語の扱いとエンコードShift_JISは扱えるのだろうか。もう少し調べてみよう。

以下メモ。

Javaと.NET(C#)の実装を探してみた。
Java
org.json
Json-lib
JSON Tools

.NET C#
Json.NET
Jayrock

まだまだありそう。