Web サービスで使用するために Json にシリアライズしたい一連の複雑なビジネス オブジェクトがあります。私は現在 DataContractJsonSerializer を使用して Json を生成していますが、デフォルトの XmlReader は Base64 文字列を処理できないため、デシリアライゼーションを妨げています。
Json.Net の多くの肯定的なレビューを読んだ後、試してみることにしました。驚くべきことに、ビジネス オブジェクトが ToString() メソッドをオーバーライドすると、最も単純なケースで誤った出力が生成されます。JSON を生成する代わりに、単純に文字列値を出力します。
たとえば、シリアライザーはオブジェクトを単純な文字列として表示するため、次のステートメントは文字列のみを生成します。
public class MyClass {
public string Title{get;set;}
public override ToString(){ return Title; }
public string ToJson(){
return JsonConvert.SerializeObject(this);
}
}
json 形式の出力ではなく、タイトル文字列しか取得できません。これを回避するには、オブジェクトに特別な方法でマークを付ける必要がありますか? ビジネス オブジェクト階層には ToString() をオーバーライドする多くのオブジェクトが含まれているため、特別な属性などを導入する必要はありません。