REST APIやGraphQLなどWeb APIのデファクトスタンダードとも言えるフォーマットになっているのがJSONです。しかし、そのJSONへのシリアライズ、パースにかかるコストは意外に大きいです。 そこで作られたtのがconです。JSONとYAMLを足したようなフォーマットで、JSONよりも高速なのが売りです。

conの使い方

conのフォーマットです。ハッシュの場合は波括弧、配列の場合はカギ括弧を使って表現します。

key "string"
pi 3.14
hash {
  enable true
  nothing nil
}
ports [
  22
  1234
  8888
]

ライブラリの利用例です。to_con を使います。

require "con"

con_any = CON.parse con_data
con_any.to_con

require "json"
con_any.to_json

conはJSONをパースするのに比べて1.3倍、逆にJSONとして出力するのに比べて約2倍高速なようです。もちろんこれはプログラミング言語によって変わるでしょう。conが受け入れられるかどうかは外部ライブラリの存在によるところが大きいですが、JSONもXMLが主流の中で一気に普及しただけに見逃せない存在かも知れません。

conはCrystal製のオープンソース・ソフトウェア(ISC License)です。

j8r/con: A simple, fast and readable JSON-compatible serialization format