2012-04-26 7 views
3

これは簡単ではありませんが、私はそれをやり遂げることはできません。私のWCFサービスによってJSONに直列化復元するとき、WCFでクラス名をインクルードするJson Serialization

public class SampleItem 
{ 
    public int Id { get; set; } 
    public string StringValue { get; set; } 
} 

次のような出力を提供します:以下のデータコントラクトクラスを考えると

[{"Id":1,"StringValue":"Hello"}] 

も、クラス名を含めるする方法はありますか?すなわち:

"SampleItem": [{"Id":1,"StringValue":"Hello"}] 

答えて

3

あなたはこのような何かを試みることができる:

private dynamic AddClassName(SampleItem item) 
{ 
     return new {SampleItem = item}; 
} 

そして

var item = new SampleItem {Id = 1, StringValue = "Hello"}; 
dynamic itemClassName = AppendClassName(item); 
string json = new JavaScriptSerializer().Serialize(itemClassName); 
Debug.WriteLine(json); 

編集 - これはすべてのタイプのために働く:

private static string GetJsonWrapper<T>(T item) 
{ 
    string typeName = typeof(T).Name; 
    string jsonOriginal = new JavaScriptSerializer().Serialize(item); 
    return string.Format("{{\"{0}\":{1}}}", typeName, jsonOriginal); 
} 
+0

はクールに!これは機能します。しかし、これは、 "SampleItem"ではなく私のサービスから動的な型を返さなければならないことを意味します。他の方法はありますか? – Obaid

+1

あなた自身のシリアライザを使用する必要があるようですが、このブログの記事をチェックしてください:http://www.danrigsby.com/blog/index.php/2008/03/07/xmlserializer-vs-datacontractserializer-serialization-in -wcf / – sventevit

関連する問題