2012-04-26 3 views
3

이것은 사소한 것이어야하지만 완료하지 못했습니다. 너무 클래스 이름을 포함 할 수있는 방법이WCF에서 클래스 이름 포함 Json Serialization

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

있습니까 :

내 WCF 서비스에서 JSON 직렬화 복원
public class SampleItem 
{ 
    public int Id { get; set; } 
    public string StringValue { get; set; } 
} 

는, 다음과 같은 출력을 제공합니다 다음 데이터 계약 클래스 감안할 때? 즉 :

"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-datacontract serializer- serialization-in -wcf / – sventevit