はまったりひらめいたり…とか…

.Net系プログラムで勉強したこととか嵌ったことについて書いたりします。

XamarinでUtf8Jsonを使おうとしてドはまりした話

最強Jsonリアライザと噂のUtf8JsonをXamarinで使用しようとしてドはまりした話です。

公式のGithubは↓です。使用の仕方からすごくわかりやすく記述されています!

github.com

neue cc - Utf8Json - C#最速のJSONシリアライザ(for .NET Standard 2.0, Unity)

はまった原因としては。。。うん。まぁ環境構築やらで自分のやり方が悪いだけな気がします。。。

新規プロジェクトの作成から

f:id:TakasDev:20171007232510p:plain

f:id:TakasDev:20171007233304p:plain

ひとまずUtf8JSonは.netframework4.5からってことのようなので

.netframework4.5.2、Xamarin.Forms + PCLの上図みたいな構成で

新規にプロジェクトを作ってみました。

Utf8Jsonは公式GithubのREADMEどおりに、NuGetからパッケージインストールしてみます。

f:id:TakasDev:20171007234129p:plain

あーはん?

f:id:TakasDev:20171007234535p:plain

んー。Dependencyの子たちをInstallしてみようとしてもうまくいかない。。

.netframeworkのPCLのプロファイル構成を111とかに変更したり

.netframework4.5.2ではなく、4.5で新規にプロジェクトを作り直したり

VisualStudio for macで作ったりしてもダメだったので

.netstandard2.0のPCLにする方法で手を打ってみます。

.netstandard2.0のPCL構成に変更

とおもったけどデフォルトで.netstandard2.0なPCLの構成はつくれないのかな?

nuitsさんのこちらの記事を参考に、.netstandardなPCLを作成してみました。

www.nuits.jp

f:id:TakasDev:20171008005522p:plain

上記の通り.netstandard、PCLライブラリもできて

エミュレータ上で実行確認できたので、本命のUtf8JsonをInstallしてみます!

f:id:TakasDev:20171008005835p:plain

うひょー!

Utf8Jsonうごくかためしてみる

Utf8Jsonの依存先のCLが、内部を実装してないと意味がないので動作するか試してみます。

確認につかったソースは公式のGithubのREADMEそのまんまです。

f:id:TakasDev:20171008011154p:plain

いぇあ!うごきました!

今回、XamarinFormsのプロジェクトに直接突っ込もうとしてドはまりしたわけだけど

実際の運用を考えるとUtf8Jsonを使用するような処理を切り出して

.netstandardのプロジェクトを別個作成することにはなると思う。