を使用して再帰的にクラス階層をデシリアライズすることはできません。カスタムJsonConverterを使用してJSON文字列から逆シリアル化する必要があります。問題は、特定のケースごとにコードがありますが、ルールプロパティを処理するために再帰的に実行することはできません。各要素も条件になります。 私のコードは、この(ReadJson法)のようになります。は、私はこのようなクラス階層を持ってJSON.NET
var jo = JObject.Load(reader);
Rule rule = null;
if (jo["condition"] == null)
{
rule = new Rule();
//fill the properties for rule
}
else
{
rule = new Condition();
//I now want the converter to go through all the values in jo["rules"] and turn them into Rules or Conditions
}
これを達成するための最良の方法は何ですか?オブジェクトが条件であることが判明した場合、私は、残りの部分のためのJSONを取得しようとしました:
var rules = JsonConvert.DeserializeObject<Rule[]>(json, this);
例外:
var json = jo.GetValue("rule").ToString();
しかし、私はこのようにそれをデシリアライズすることはできません、それは例外がスローされますis:JsonReaderException:JsonReaderからJObjectを読み込む際にエラーが発生しました。現在のJsonReaderアイテムはオブジェクトではありません:StartArray。パス "、1行目、1位。
アイデア?
JSONが好きなものを見ていますか? –
もちろん、ルールや条件の配列と同様です。 [{...}、{"condition":true、...}]のようなものです。 –