2012-05-01 50 views
1

我一直在創建一個基於REST的WCF服務來發送和接收json數據。我能夠獲得大部分工作,但這最後一部分確實難倒了我。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); 
    } 

的問題是,newstuff.SearchTerms(OK,所有Newstuff文件中)爲空或0

如果我修改我的類:

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; } 
} 

它返回數據。

我使用Fiddler調用:

POST http://127.0.0.1:8835/testing/New HTTP/1.1 用戶代理:提琴手 主機:127.0.0.1:8835 的Content-Length:122 內容類型:應用/ JSON;字符集= UTF-8

[{ 「緯度」:43.34, 「經度」:45.234, 「類別」: 「還沒有設置」, 「SearchTerms」: 「市中心」, 「距離」:12.234}]

它看起來好像我的類沒有被實例化。我在集合中創建了一些虛擬代碼

{set {int i = 1;};

但如果我在集合中創建斷點,它永遠不會被調用。

我在做什麼錯?

回答

0

您需要添加DataContract和DataMember屬性數據模型......

看到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

我這樣做,沒有任何變化。仍然做同樣的事情。 – Carl

+0

原來是我的Fiddler測試數據中的一個問題。我有一套封閉的[]。不知道我在哪裏看到的,並且Fiddler上的解析器沒有抱怨。 – Carl