WCF 응답시 객체를 JSON 또는 Xml로 시리얼라이즈

 WCF로 REST 웹서비스를 만들어 테스트해봤습니다. 테스트 과정에서 json 포멧으로 응답을 처리했는데 단순히 스트링 하나만 처리했었는데 json 값들을 여러개 채워서 응답할 수 있는 것을 정리해봅니다. 사실은 간단한데 WCF 처음이다보니 정리하게 되네요.

    [ServiceContract]
    public interface IService1
    {
        // TODO: Add your service operations here
        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        GameUserProfile GetGameProfile(int Server_Type, string FBID);
    }

    [DataContract]
    public class GameUserProfile
    {
        int gameUserNo;
        string gameUserId;
        string codename;

        [DataMember]
        public int GameUserNo
        {
            get { return gameUserNo; }
            set { gameUserNo = value; }
        }

        [DataMember]
        public string GameUserID
        {
            get { return gameUserId; }
            set { gameUserId = value; }
        }

        [DataMember]
        public string CodeName
        {
            get { return codename; }
            set { codename = value; }
        }
    }
 IService1.cs 선언부입니다. 추가된건 [DataContract]라는 부분입니다. Response할 객체를 저런식으로 선언해주고 사용합니다.


    public class Service1 : IService1
    {
        public GameUserProfile GetGameProfile(int Server_Type, string FBID)
        {
            GameUserProfile response = new GameUserProfile();
            response.GameUserNo = 9;
            response.GameUserID = "miglous";
            response.CodeName = "Hani";

            return response;
        }
     }
 Service1.svc.cs 파일입니다. 기존에 string으로 리턴하던 것을 객체 인스턴트를 만들어 내용을 채운후에 객체를 리턴하면 WCF가 자동으로 닷넷 인스턴스를 지정된 json 또는 xml 인코딩 데이터로 시리얼라이즈 처리하는 것 같네요.

 피들러로 테스트해보면 json으로 잘 넘어온 것을 확인할 수 있습니다.

 Responseformat 을 Webmessageformat.Xml 로 해주면 xml로 되구요.

 추가적으로 자세한 사항은 밑에 msdn 링크를 참고하세요.

msdn - 독립 실행형 JSON Serialization
msdn - JSON 데이터 시리얼라이즈 및 디시리얼라이즈
msdn - JSON과 XML 간의 매핑
msdn - 메시지 수준의 프로그래밍으로 JSON으로 시리얼라이즈

댓글

이 블로그의 인기 게시물

CMake Windows에 설치하기

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

크로스 스레드 작업이 잘못되었습니다. xxx 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다