UnityでJSONをあつかう
About
通信して連携するようなアプリケーション、ゲームを作る場合に、JSON形式でデータをやり取りすることは良くあります。ここでは公開されている既存のリソースを利用してJSONを取りあつかう方法についてまとめます。
これらの記事を書く段階では取りあえずJSONテキストのパースとそこからのデータの受け取り(デコード)だけできればよかったので、JSONテキストの生成(エンコード)については言及されていません。追って対応した場合には各ページに生成についても追記します。基本的には公開されているリソースを活用するので、詳細な利用方法については公開元で確認することができると思います。
そもそもなぜ.Netで提供されている機能(クラス)を利用してJSONの処理を行わないのか、というと、UnityがあつかうMonoのバージョンは.Net2.0がベースとなっているバージョンで、JSONに関する機能が提供されていない(ようである)ためです。最悪、他のC#向けライブラリもバージョン差異によって利用することができない可能性があります。
- Unityであつかえる.Netクラスの一覧(公式)
Pages
どれを利用すればよいか-おススメ
- 結論
- 小規模な展開でMITライセンスが許容できる→MiniJSON
- 多少複雑な操作を要求する→JSONFX
- MITライセンスも気にかかる→LitJSON
- 独自の開発も行うならLitJSONを下地にできる
- 小規模な展開でMITライセンスが許容できる→MiniJSON
ライセンスや設定の必要性からJSONObjectを選択する必要性は少ないかもしれません。JSONObjectが特に必要な場合以外には、他のものを選択するべきでしょう。JSONObjectはLGPL2.1ライセンスであるためです。
MiniJSONやJSONFXはMITライセンスなので、配布する際に原文を掲載することのみを条件に利用することができます。単一のファイル(の短いソースコード)で構成されることもあって、ほんの少しのJSONを扱う場合にはMiniJSONで良いですし、複雑な構造のJSONを扱う場合にはJSONFXが良いようです。JSONFXはMiniJSONの作者らが推奨しています。またiOSへの対応もあるようです。2012年後期にも開発(管理)が続いているようですし、十分に活用することができるでしょう。
LitJSONは見た目では複数のファイルから構成されるようですが、DLLにしてしまうなどしてプラグインとして管理すれば扱うファイルは1つで済みます。Aset管理からLitJSON専用のフォルダを作成し、集中して管理することもできるので、(他のものと比較して)複数のファイルであることを嫌悪するよりも、PublicDomainであることに注目して活用を考慮するべきです。PublicDomainは権利の表示などを行うことなく利用できるライセンスです。開発自体が2007年で停止されバージョンが1.0まで到達していないことも気にかかりますが、基本機能は十分に扱うことができるので、細かいライセンスを気にする場合には積極的に活用するべきライブラリです。