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

Angularや.NETやAzureやその他色々。

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のプロジェクトを別個作成することにはなると思う。