Jav*_*ier 17 asp.net-mvc serialization json json.net asp.net-web-api
我正在使用JSON.NET,并且在WEBAPI对象反序列化过程中遇到了一些麻烦.经过一些研究后,我发现该课程标有[Serializable].当我删除它时,反序列化就好了.
有关这方面的更多详细信息,请访问:
现在谈到我使用binaryformatter来创建从这个对象类计算的哈希值的问题.但Binaryformatter要求必须将类标记为[Serializable].
您能否推荐我任何方法让两件事同时发挥作用?
Jav*_*ier 24
找到解决方案:
首先,检查您的Newtonsoft.JSON版本是否大于4.5或仅使用NuGET进行更新
根据版本说明,两者都可以使用一些额外的注释从这个版本开始协同工作.
"现在,如果您序列化具有该属性但不想要新行为的类型,则可以使用JsonObjectAttribute在类型上覆盖它"
[JsonObject]
[Serializable]
public class Foobar {
Run Code Online (Sandbox Code Playgroud)
现在可以使用JSON.NET,在我的例子中,可以使用带有[Serializable]属性的binaryformatter.
在每个类上指定JsonObject的替代方法是告诉web.api全局忽略Serialize属性.这可以通过重置web api JsonFormatter上的DefaultContractResolver来完成:
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
Run Code Online (Sandbox Code Playgroud)
(使用NewtonSoft.Json.Serialization,其中config是System.Web.Http.HttpConfiguration)
从NewtonSoft v4.5开始,DefaultContractResolver上的IgnoreSerializableAttribute属性设置为true,但默认情况下,默认情况下,围绕DefaultContractResolver的web api包装器设置为false.
| 归档时间: |
|
| 查看次数: |
6154 次 |
| 最近记录: |