2012-05-01 7 views
1

저는 Json 데이터를 보내고받는 REST 기반 WCF 서비스를 만들어보고 놀았습니다. 나는 대부분의 일을 할 수 있지만,이 마지막 작품은 정말 나를 곤란하게했다.REST, json, .Net4 및 복합 데이터 유형

서비스에 복잡한 데이터 유형을 보내고 있습니다. 데이터를 보내 겠지만 클래스가 인스턴스화되지 않은 것처럼 보입니다. (별도의 클래스 파일)

클래스 선언 :

public class WhereItsAt 
{ 
    public float Latitude { get; set; } 
    public float Longitude { get; set; } 
    public string Category { get; set; } 
    public string SearchTerms { get; set; } 
    public float Distance { get; set; } 
} 


    [WebInvoke(Method = "POST", UriTemplate = "/New", RequestFormat = WebMessageFormat.Json)] 
    public string Create(WhereItsAt newstuff) 
    { 
     return string.Format("Success: {0} <Should show search terms here>", newstuff.SearchTerms); 
    } 

문제는 그 (OK, newstuff 모두)는 null 또는 0

내 클래스를 수정하는 경우 newstuff.SearchTerms :

public class WhereItsAt 
{ 
    public float Latitude { get; set; } 
    public float Longitude { get; set; } 
    public string Category { get; set; } 
    public string SearchTerms { get{return "hello"}; set; } 
    public float Distance { get; set; } 
} 

데이터를 반환합니다.

내가 피들러와 전화 해요 :

POST http://127.0.0.1:8835/testing/New HTTP/1.1 사용자 에이전트 : 피들러 호스트 : 127.0.0.1:8835 콘텐츠 길이 : 122 콘텐츠 형식 : 응용 프로그램/JSON; 문자셋 = UTF-8

[{ "위도": 43.34, "경도": 45.234, "카테고리": "아직 설정되지 않음", "의 SearchTerms": "시내", "거리": 12.234을}]

내 수업이 인스턴스화되지 않은 것처럼 보입니다. 세트에 더미 코드를 만들었습니다.

{set {int i = 1;};

하지만 집합에 중단 점을 만들면 절대로 호출되지 않습니다.

내가 뭘 잘못하고 있니?

답변

0

당신은

나는, 변화가 그 일을하지했습니다 http://msdn.microsoft.com/en-us/library/ms733127.aspx

[DataContract] 
public class WhereItsAt 
{ 
    [DataMember] public float Latitude { get; set; } 
    [DataMember] public float Longitude { get; set; } 
    [DataMember] public string Category { get; set; } 
    [DataMember] public string SearchTerms { get{return "hello"}; set; } 
    [DataMember] public float Distance { get; set; } 
} 
+0

보기 ... DataContract와 DataMember를이 데이터 모델에 속성을 추가해야합니다. 아직도 똑같은 일을합니다. – Carl

+0

Fiddler 테스트 데이터의 문제로 판명되었습니다. 나는 []를 동봉했다. 내가 그것을 보았는지 확실치 않으며, Fiddler의 파서는 불평하지 않았다. – Carl