1

JSON をクラスに直接逆シリアル化するのではなく、JSON を独自のデータ構造に解析してナビゲートできる .NET 用の JSON パーサーとエンコーダーを探しています。Java では、非常に使いやすい Jettison の JSONObject と JSONArray を使用ます

シリアル化 (デ) したくない理由はいくつかあります。

  1. シリアライザーは、JSON にメタデータを追加する傾向があり、逆シリアル化のためにそのメタデータを必要とします (たとえば、fastJSON および JSON.NET は型情報を追加します)。
  2. さまざまな種類のデータをすべて処理するために、たくさんのクラスを作成しなければならないという面倒なことはしたくありません。また、興味のないフィールドにプロパティを追加するのではなく、それらを無視できるようにしたいと考えています。

利用可能なものはありますか、それとも Jettison のサブセットを移植する必要がありますか?

4

1 に答える 1

0

あなたが指摘するシリアライゼーションの欠点は、少なくとも JSON.NET の場合、実際には存在しません。

  1. JSON.NET は、既定ではメタデータを追加しません。必要に応じてメタデータを追加するように指示できますが (たとえば、1 つのプロパティが異なる型の値を保持できる場合)、これはオプションです。
  2. クラスを作成する手間を、文字列やキャストを操作する手間に置き換えますが、それはさらに悪いことだと思います。また、興味のないフィールドは無視できますが、それらをタイプに追加しないでください。

でも、本当にやりたいと思えばできる。同等の型はJObjectandJArrayであるため、オブジェクトを逆シリアル化する場合は、次を使用します。

JObject obj = JsonConvert.DeserializeObject<JObject>(json);

別のオプションとして、必要なタイプをまったく指定する必要はありません。次のいずれJObjectかを返しますJArray

object objectOrArray = JsonConvert.DeserializeObject(json);
于 2012-03-12T13:13:39.380 に答える