低レベルでのJSON(逆)シリアル化をサポートするフレームワークを探しています。または高度にカスタマイズ可能です。
シリアル化する必要のあるオブジェクトモデルのタイプの多くは、特定の方法で作成する必要があり、すべての情報が汎用パーサーで利用できるわけではありません。現在、ほとんどの型にJSONConvertersでJSON.Netを使用していますが、型のインスタンス化はトリッキーで、あまりクリーンではありません(JSONConstructor属性を持つプライベートコンストラクター+残りの構築データを提供する構築後のInitializeメソッド)。
要するに、ORマッパーは私にとって理想的ではありません。理由は次のとおりです。
- オブジェクトはPOCOではありません(デフォルトのコンストラクターはなく、パーサーで使用可能なすべてのコンストラクター情報ではありません)
- 特定の型は、OR-Mapperが作成するものよりもはるかにコンパクトで読みやすく表現できます(たとえば、値と型のペアを
{"theType" : "theValue"}
代わりに格納できます{"type": "theType", "value" : "theValue"}
。ここでの違いは主に読みやすさです) - ドメインモデルへの変更をサポートすることは困難です。古いパーサーを使用してレガシーデータを古いPOCOに解析し、それらを現在のPOCOに変換して、現在のパーサーでシリアル化する必要があります(少なくとも、ORマッパーを使用した場合はそのようになっていると思います)
すべてのJSONConvertersを作成したとき、低レベルのシリアル化メソッド(WriteProperty、ReadValue、WriteObject)を提供するフレームワークで十分であり、よりコンパクトで読みやすいJSONを作成する柔軟性を提供し、さまざまなオーバーヘッドがほとんどないバージョンのドメインモデル(ORM解析にレガシードメインオブジェクトが必要な場合と比較して)。
低レベル/高度にカスタマイズされたJSON解析をサポートするフレームワークはありますか? JSONは単純な形式であるため(日付の解析などは頭痛の種になる可能性がありますが)、それほど難しいことではないと思いますが、私はそのようなパーサーを自分で作成したくありません。
JSON.NetのJsonReader/Writerタイプは基本的に私が探しているものですが、これらのタイプをこのように使用することがこれほど素晴らしいアイデアであるかどうかはわかりません。この機能を提供する上でより良い仕事をする他のライブラリがある場合–JSON.Netは結局ORMパーサーとして使用されることを目的としています。