【问题标题】:REST, json, .Net4 , and complex data typesREST、json、.Net4 和复杂数据类型
【发布时间】:2012-09-05 22:13:55
【问题描述】:

我一直在尝试创建一个基于 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)为空或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 内容长度:122 内容类型:应用程序/json;字符集=utf-8

[{"Latitude":43.34,"Longitude":45.234,"Category":"尚未设置","SearchTerms":"Downtown","Distance":12.234}]

在我看来,好像我的类没有被实例化。我在集合中创建了一些虚拟代码

{set{int i = 1;};

但是如果我在集合中创建一个断点,它就永远不会被调用。

我做错了什么?

【问题讨论】:

    标签: c# json wcf post


    【解决方案1】:

    您需要将 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; }
    }
    

    【讨论】:

    • 原来是我的 Fiddler 测试数据中的一个问题。我有一组封闭的[]。不确定我在哪里看到的,Fiddler 上的解析器没有抱怨。
    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2013-10-30
    • 1970-01-01
    • 2010-12-18
    • 2010-09-17
    相关资源
    最近更新 更多