1

低レベルでの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パーサーとして使用されることを目的としています。

4

2 に答える 2

1

非常に構成可能な JSON 用のこのJava ライブラリを使用しました。ただし、C# に移植しました。:)

于 2013-02-04T12:11:17.783 に答える
0

この質問を締めくくるために、私は自分で回答を投稿しますが、Soundararajan が計画を完了して実装を提供する機会があれば、Soundararajan の回答を受け入れます。

とりあえず、JSON.Net の JsonReader/Writer 型を使うことになりました。

パフォーマンスが問題になる場合は、 SAX のような解析をサポートする protobuf-net に切り替えます。

誰かが高度にカスタマイズ可能な / SAX のような JSON シリアル化のためのより良いライブラリを知っている場合は、お気軽に回答を残してください。私はまだこの質問を見ます。

于 2013-07-30T10:11:53.087 に答える