2012-01-25 13 views
1

Newtonsoft Jsonでクラス階層をC#でシリアル化しようとしています。Newtonsoft JsonのSerialisingクラス階層

私のクラスの構造は次のようになります。

public abstract class Foo 
{ 
    public string PropertyOne{get;set;} 
} 

public class Bar : Foo 
{ 
    public string PropertyTwo{get; set;} 
} 

私はバーのクラスをシリアル化するとき、私はバークラスからのFooクラスではないPropertyTwoからのみPropertyOneプロパティを持っています。抽象基本クラスのプロパティは、メッセージの大半に共通しているので、階層を持つことはベストプラクティスオプションのように感じます。

階層を削除せずに、基本クラスとサブクラスのすべての属性をシリアル化する方法を知っている人はいますか?

答えて

1

JsonConvert.SerializeObjectは私

string json = JsonConvert.SerializeObject(new Bar{ PropertyOne = "hello", PropertyTwo = "world" }); 

出力のためのトリックを行うようだ:私のメインクラスはのDataContract直列化(デー​​タメンバーを)持っていたし、私の親クラスがなかったので

{"PropertyTwo":"world","PropertyOne":"hello"} 
1

私はこの問題を抱えていました。私はシリアライズからメンバーを防ぐために、基本クラスに `DataContract`属性が、` DataMember`はJSONでシリアライズする属性に必要なすべての派生タイプを追加した

+0

:-)愚かなエラーのためのプロンプターとして投稿

。 XMLシリアル化は 'DataMember'属性なしで機能しました。 – TaintedLemon