さけのさかなのブログ

同人ゲーム開発やってます。Unity使ったりする。

【Unity】雑にUtf8Json

 Utf8JsonでDictionary<string, object>とかをガッとシリアライズできるようにします。

初期化

Utf8Json.Resolvers.CompositeResolver.RegisterAndSetAsDefault(
    new[] { Utf8Json.Formatters.PrimitiveObjectFormatter.Default },
    new[] {
        Utf8Json.Resolvers.GeneratedResolver.Instance, // 作ってないなら要らない
        Utf8Json.Resolvers.BuiltinResolver.Instance,
        Utf8Json.Resolvers.DynamicGenericResolver.Instance
    });

バグ

 現在のunitypackage(1.3.7)にはバグがあります。

 たとえばこんなコード。

var obj = new Dictionary<string, object> { {"hoge", new [] { 1, 2, 3 } } };
var jsonString = Utf8Json.JsonSerializer.ToJsonString(obj);
Debug.Log(jsonString); // -> {"hoge":[123]}

 Json文字列の配列にカンマが抜けてますね。

 ↓の修正を反映しましょう。

github.com

何が雑かというと

 コードジェネレータ使えっていう話ではあるんだけど、一方こういう使い方も許容されてますよという話ですね。