JSON.Netを使用してシリアル化中にフィールドとプロパティを条件付きで無視する方法 sealed
クラスなので、JsonIgnoreAttribute
から継承できません。私は何をすべきか?JSON.Netを使用してシリアル化中にフィールドとプロパティを条件付きで無視する方法
答えて
私が見つかりました。答え。私はJsonConverter
から継承し、新しいコンバータを作成します。
public class CustomJsonConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var list = (IList)value;
JArray s = new JArray();
foreach (var item in list)
{
JToken token = JToken.FromObject(item);
JObject obj = new JObject();
foreach (JProperty prop in token)
{
if (prop.Name != "Title") // your logic here
obj.Add(prop);
}
s.Add(obj);
}
s.WriteTo(writer);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException("Unnecessary because CanRead is false. The type will skip the converter.");
}
public override bool CanRead
{
get { return false; }
}
public override bool CanConvert(Type objectType)
{
return objectType != typeof(IList);
}
}
JSON.NETのShouldSerialize -syntaxを使用できます。 JSON.NETサイトの良い例があります:
http://www.newtonsoft.com/json/help/html/ConditionalProperties.htm
public class Employee
{
public string Name { get; set; }
public Employee Manager { get; set; }
public bool ShouldSerializeManager()
{
// don't serialize the Manager property if an employee is their own manager
return (Manager != this);
}
}
ShouldSerializeがニーズに合わない場合は、あなたがContractResolversと直列化の完全な制御を取ることができます:http://www.newtonsoft.com/json/help/html/ContractResolver.htm
これが動作することは決してありませんでしたが、ブレークポイントはシリアル化中に呼び出されないことを示しています。 – Wobbles
ShouldSerialize構文は、プロパティFooに対して、Fooをシリアル化する必要があるかどうかをtrueまたはfalseで返すShouldSerializeFoo()メソッドを持つような規則です。 – CharlieNoTomatoes
- 1. JSON.NET - シリアル化のプロパティを無視する
- 2. JSON.NET - 条件付きタイプ逆シリアル化
- 3. Json.netを使用してコレクション内のオブジェクトを条件付きでシリアル化
- 4. protobuf.net&条件付きシリアル化
- 5. シリアル化時にプロパティを無視する
- 6. json4s - シリアル化中に特定のタイプのフィールドを無視する
- 7. Json.netでnullフィールドを無視する
- 8. XMLシリアル化を使用して自動的に非シリアル化可能なプロパティを無視する
- 9. .NET JSONシリアル化中にフィールドを無視する。 [XmlIgnore]に似ていますか?
- 10. Json.Netシリアル化中のプロパティの名前を変更します
- 11. json.netを使用してjsonを逆シリアル化できません
- 12. 条件付きでGitを無視する
- 13. 条件付きでサーバー側を無効にする方法
- 14. JSON.NETを使用してJSONを辞書に逆シリアル化する方法
- 15. json.netを使用してF#タイプに逆シリアル化し、@記号を含むjsonプロパティ
- 16. 時間帯を使用して検索中の条件カレンダー日付を無視して
- 17. Automapper - 条件付きマッピングを無視する
- 18. json.netを使用してnullの場合にclassのプロパティを無視する方法
- 19. RAIIを条件付きで使用する最良の方法
- 20. Json.NET - すでにシリアル化されたプロパティの再シリアル化を防止する
- 21. PHPを使用して条件付きでコードブロックをロードする方法は?
- 22. Pythonで条件付き条件を使用する
- 23. 属性を含まないjsonにシリアル化するときのプロパティを無視する方法
- 24. 条件付き必須フィールドを追加する方法は?
- 25. 逆シリアル化中にJSON.NETが継承を使用していない理由
- 26. 条件付きクラスのプロパティ?
- 27. 条件付きプロパティ設定
- 28. 条件付きEpiserver 6プロパティ
- 29. Ruby IMAPで条件付きで使用する方法
- 30. 条件付きフィールドのバックボーンフォーム
あなたは(http://stackoverflow.com/questions/10169648/how-to-exclude-property-from-json-serialization)[ScriptIgnore]をチェックしましたか? – Kurubaran
@クルバランはい、私は条件付きでフィールドを無視したいです。 –