1

モデルがあるとしましょう:

public class Node<T> {
    public T Value { get; set; }
}

int[]結果のノードをシリアル化します。

{"value":[1,2,3]}

私は今それをデシリアライズしたい:Node<string>したがって、JSON のチャンクとして扱います:

node.Value == "[1,2,3]"

私は今JsonConverter、例えば使用するカスタムを使用してJToken.ReadFrom、それを実行できるようToStringになりました。ただし、これによりフォーマットなどが壊れます。

新しいものを作成してJsonWriter、 my で次のように使用することもできますConverter

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
    var sb = new StringBuilder();

    using (var wo = new StringWriter(sb))
    {
        using (var w = new JsonTextWriter(wo))
        {
            w.WriteToken(reader, true);
        }    
    }

    return sb.ToString();
}

このソリューションで私が抱えている問題は、コンバーターでマークされた各プロパティのライターを作成することです...

3番目の解決策は、グラフを自分でトラバースし、ライターなどを再利用することです.

JSON 文字列内の特定のノードを生の JSON に逆シリアル化するための推奨される (最も効果的な) ソリューションはどれですか? JSON の結果には多くの項目が含まれるため、このノードを持つオブジェクトは 1 つだけではないことに注意してください。

4

1 に答える 1