2011-04-21 5 views
1

나는 XML에 DataContract/DataMember 속성과 DataContractSerializer으로 직렬화하는 클래스를 몇 개 가지고 있습니다. 이제 클라이언트에서 Ajax 호출을 위해 JSON에 직렬화하는 데 동일한 클래스를 사용하고 싶습니다. 그러나 JSON으로 serialize하려는 멤버는 XML로 serialize하려는 멤버와 약간 다릅니다. 이 두 가지를 구별하는 방법 (속성 포함)이 있습니까?XML 및 JSON에 대한 다른 멤버 serialize

BTW XmlSerializer과 대조적으로 전용 멤버를 serialize해야하므로 XmlSerializer으로 전환하는 옵션이 아닙니다. JSON 직렬화를 들어

+0

서로 다른 두 개의 컨텍스트에서 다른 멤버를 노출하려면 정의에 따라 서로 다른 두 가지 데이터 컨트랙트가 있어야합니다. – Misko

+0

사실, 그래서 같은 클래스에 두 개의 서로 다른 데이터 계약을 정의 할 수 있습니까? – Carvellis

답변

1

, 내가 사용

System.Web.Script.Serialization.JavaScriptSerializer 

또한 출력을 조작 할 수 무시 속성을 사용하여 상황에 그것을 사용할 수 있습니다.

http://msdn.microsoft.com/en-us/library/system.web.script.serialization.scriptignoreattribute.aspx

편집 :

그냥 당신이 datacontracts 처리에 더 익숙 할 수있는 또 다른 옵션이 있었다 발견 :

System.Runtime.Serialization.Json.DataContractJsonSerializer 

Refersnces :

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx

http://msdn.microsoft.com/en-us/library/bb412179.aspx

+0

주로 XML serialization에 대한 멤버를 제외하거나 무시해야합니다. 그게 가능한가? – Carvellis

+0

특성이있는 클래스의 공용 속성을 무시할 수 있습니다. DataContractSerializer를 사용하여 링크 만하면됩니다. 사적인 구성원이 문제 일 수 있습니다. 그러나이 serializer는 XML serialization을 수행하지 않습니다. 언급 한대로 DataContractSerializer 또는 XmlSerializer를 사용해야합니다. ScriptIgnoreAttribute 예제가있는 링크를 확인하십시오. – Craig

관련 문제