【问题标题】:Customize Json.NET serialization to consider empty strings as null自定义 Json.NET 序列化以将空字符串视为 null
【发布时间】:2012-10-05 01:01:48
【问题描述】:

我有一个愚蠢的问题。我正在使用 ASP .NET MVC 4、EF5 和 Ext JS (Sencha) 开发一个 Web 应用程序。

问题是,按照设计(我不知道为什么),Ext JS 在执行 ajax 请求时会将具有空值的 js 对象转换为空字符串。

为了方便起见,我将过度简化示例。

如果我在 JavaScript 中有一个变量

icon_id : null

当我得到 JObject 服务器端时,它变成了

icon_id : ""

当我将icon_id 作为请求的参数传递时。所以当我写icon_id.ToObject<MyNETIconIDClass>() 时,我得到一个异常,告诉我它不能从字符串转换为可为空的int。这是可以理解的。

我可能误解了这背后的逻辑,但由于我不想弄乱 Ext JS 源代码,有什么办法可以告诉 Json.NET 反序列化器将空字符串视为 null 吗?

据我所知,使用转换器会很麻烦,因为我必须更改模型中每个类中的每个可为空的 int 属性才能使这项工作正常进行。

【问题讨论】:

  • 你是如何将它传递给服务器的? Ext 不会(或者当然不应该)将其转换为任何空字符串。
  • 请查看此链接:sencha.com/forum/…。这似乎是发生在我身上的事情。我尝试在 params 中传递一个可为空的 int,当结果为 null 时,我在尝试反序列化时遇到异常。
  • 所以这是一个获取请求?在这种情况下,Ext 并没有做任何不良的事情,没有真正的方法来表示 null 和 '' 之间的区别。
  • 天哪,我没注意到!我将params 替换为jsonData 以将其标识为发布请求并且它有效。如果您将您的评论作为答案,我可以接受您的回答;)

标签: serialization extjs json.net


【解决方案1】:

根据 cmets,OP 发送的是 GET 请求而不是 POST。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多