REST,json,.Net4和复杂数据类型

时间:2012-05-01 18:20:26

标签: c# json wcf post

我一直在玩创建基于REST的WCF服务发送和接收json数据。我能够让大多数事情发挥作用,但这最后一件事让我很难过。

我正在向我的服务发送复杂的数据类型。我正在发送数据,但似乎我的类没有被实例化。

类声明(在单独的类文件中):

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(好的,所有newstuff)都为null或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 用户代理:Fiddler 主持人:127.0.0.1:8835 内容长度:122 Content-Type:application / json;字符集= UTF-8

[{“纬度”:43.34,“经度”:45.234,“类别”:“尚未设置”,“SearchTerms”:“市中心”,“距离”:12.234}]

它看起来好像我的类没有被实例化。我在集合

中创建了一些虚拟代码

{set {int i = 1;};

但如果我在集合中创建断点,则永远不会调用它。

我做错了什么?

1 个答案:

答案 0 :(得分: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; }
}