Start Debugging

json

16 件 · ページ1/2

2026-10-25 dartflutterjson

Dart の sealed クラス階層を JSON にシリアライズ/デシリアライズする方法

JSON に判別フィールドを入れ、sealed な基底クラスのファクトリでそれを switch し、書き戻すときはサブタイプで switch します。Dart 3.13.7 で動作する 3 つの実装(手書きのパターンマッチング、json_serializable 6.15.2、unionKey と fallbackUnion を使う Freezed 4.0.3)と、それぞれに潜む落とし穴を紹介します。

EF Core 11 で JSON にマッピングされたプロパティに一意インデックスを追加する方法 (SQL Server と SQLite)

EF Core 11 RC 1 では、ToJson() メンバーに対する HasIndex(...).IsUnique() は一意性を強制しません。SQL Server は IsUnique を無視し、SQLite はドキュメント全体にインデックスを張ります。JSON の値を計算列として公開し、その列に一意インデックスを設定してください。

System.Text.Json で Vector3 や Quaternion などの public フィールドをシリアル化する方法

Vector3 や Quaternion はデータを public フィールドに保持しているため、System.Text.Json は Vector3 を {}、Quaternion を {"IsIdentity":false} として書き出します。IncludeFields、カスタムコンバーター、リゾルバーの修飾子、ソース生成でこれを解決する方法を、.NET 10 と .NET 11 RC 1 で計測しながら解説します。

EF Core と Npgsql で PostgreSQL の jsonb 配列にアトミックに追加する方法

エンティティを読み込み、List.Add を呼んで保存すると、jsonb ドキュメント全体が書き換えられ、同時に行われた追加は黙って失われます。追加処理は jsonb の || 演算子を使った 1 つの UPDATE にまとめます。ExecuteSqlAsync を使うか、ExecuteUpdateAsync の中でマップした関数を使い、さらに @> によるガードで冪等にします。

EF Core 11 で SQL Server に JSON を保存するときのネイティブ json 列と nvarchar(max) の比較

SQL Server 2025 と Azure SQL ではネイティブの json 型を使いましょう。EF Core 11 はそこから JSON_CONTAINS、型付きの JSON_VALUE、インプレースの modify()、JSON インデックスを引き出せます。SQL Server 2019/2022、レガシーなツール、あるいはロールバックできる必要があるスキーマの場合は nvarchar(max) のままにしてください。
次へ