2016-10-19 17 views
0

WCFのエスケープ文字に関するJsonConvert.SerializeObjectメソッドを使用していくつかの問題があります。次のように私のWebメソッドは、ストリームを返します。これは、myObjectというのプロパティのいずれかから離れて正常に動作NewtonSoft JsonConvert SerializeObjectオブジェクトエスケープ文字の辞書

return new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(myObject))); 

<string, object>の辞書です。すべての単純な型は正しくシリアライズされますが、カスタムクラスを値として追加しようとすると、データの代わりに型が返されます。返されたデータは、現在文字

{  
    "my_dictionary": { 
     "elem_1": "{\"Prop1\":null,\"Prop2\":3}", 
     "elem_2": "{\"Prop1\":null,\"Prop2\":3}", 
     "int_property" : 123 
    } 
} 

にどのように私ができる上の任意のアイデアを逃れる含んしかし

public override string ToString() 
    { 
     return JsonConvert.SerializeObject(this); 
    } 

:これを実現するには私はそれを上書きしようとした私のカスタムクラスの.ToStringを呼び出すシリアライザから来ています私のカスタムクラスがこのようにエスケープされずに配列として返されるのを避けますか?事前に

おかげで、マット・

答えて

0

私はJavaScriptSerializer(ちょうどあなたのカスタムクラスで "オブジェクト" を置き換える)

using System.Web.Script.Serialization; 

List<Object> list = new List<Object>(); 

JavaScriptSerializer jss = new JavaScriptSerializer(); 

string res = jss.Serialize(list); 

を使用し、 "解像度" の値で、このフォーマットを取得:

[{"IdEmpresa":1,"Nombre":"Test","URL":"http:/localhost:8080/","Activo":true},IdEmpresa":2,"Nombre":"Test2,","URL":"http://localhost:8081/","Activo":true}] 
0

私はコードに間違いがあることを認識しました。シリアル化されていたクラスは実際にオブジェクトを文字列に変換するディクショナリを返していましたが、実際にはシリアライザはオブジェクトを正しくシリアル化できました。

関連する問題