2 johsoncool johsoncool 于 2016.01.27 11:47 提问

WebAPI 接收参数时,参数类有[Serializable]特性则接收不到 json,怎么回事
public class testController:ApiController
{
    public object Post([FromBody] testparam param)
    {
        return param;
    }
}
    ----------------------------------------------------------
[Serializable]
public class testparam : parabase
{
    public string username { get; set; }
    public string password { get; set; }
}
[Serializable]
public class parabase
{
    public string urerid { get; set; }
}

    为什么 classh 加了 [Serializable]就接收不到 fiddler post过来的json呢?

3个回答

caozhy
caozhy   Ds   Rxr 2016.01.27 22:29

是的,这个问题我也遇到过,简单来说,你应该去掉[Serializable]

JSON 序列化:
http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization

johsoncool
johsoncool   2016.01.28 10:41

感谢楼上,我用的是以下的方案解决的,
public class testController:ApiController
{
public object Post([FromBody] vtestparam vparam)
{
param=new vparam{...};//搞一下自动copy属性的方法自动new.
return param;
}
}
----------------------------------------------------------
[Serializable]
public class testparam : parabase
{
public string username { get; set; }
public string password { get; set; }
}
[Serializable]
public class parabase
{
public string urerid { get; set; }
}

public class vtestparam:testparam{}

可以我不知道为什么不可以加[Serializable],有哪位可能帮忙给个原因?

johsoncool
johsoncool   2016.01.28 10:45

手误,应该是这样:
public class testController:ApiController
{
public object Post([FromBody] vtestparam vparam)
{
param=new vtestparam{...};//搞一下自动copy属性的方法将 vparam to param.
return param;
}
}

至于 [Serializable] 是为了下一层的wcf使用,所以不能去掉。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!