You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jqxGrid导出JSON反序列化时DestructionDate属性始终为null

问题根因

jqxGrid的exportdata方法导出JSON时,默认使用列配置的text属性值作为JSON键名,而非配置的datafield值。
你列配置中最后一列的text属性值'Destruction Date '末尾多了一个尾随空格,直接导致导出的JSON对应键为"Destruction Date "(带末尾空格),但C#模型中[JsonProperty(PropertyName = "Destruction Date")]配置的映射键名不带末尾空格。JSON反序列化的键名匹配是严格逐字符校验的(包含首尾空格、大小写),键名不匹配时对应属性就不会被赋值,这也是为什么你把属性改成string类型、调整DateTime配置都无效——问题根本不在数据格式,是键名完全对不上。
你贴出的JSON样例、反序列化结果都能佐证这个结论:其余列的text属性值和配置的映射键名完全一致,没有多余字符,所以反序列化全部正常,唯独DestructionDate字段匹配失败。

修复方案

任选一种即可:

  • 直接修正jqxGrid列配置,去掉Destruction Date列text属性末尾的多余空格:
// 修正前:{ text: 'Destruction Date ', datafield: 'Destruction Date', filterable: false, cellsformat: 'dd/MM/yyyy'}
// 修正后:
{ text: 'Destruction Date', datafield: 'Destruction Date', filterable: false, cellsformat: 'dd/MM/yyyy'}

修改后导出的JSON键名会和C#模型的JsonProperty配置完全匹配,反序列化可正常赋值。

  • 如果你需要保留列标题显示的末尾空格(无特殊需求不推荐),可以修改C#模型的JsonProperty配置,让映射键名和导出的带空格键名完全一致:
[JsonProperty(PropertyName = "Destruction Date ")] // 注意末尾保留和导出一致的空格
public DateTime? DestructionDate { get; set; }
校验方式

修改后先检查导出的JSON内容,确认Destruction Date键名无多余尾随空格,再执行反序列化即可看到DestructionDate属性正常获取到日期值,后续生成的Excel文件也可在Mac端正常打开。

内容的提问来源于stack exchange,提问作者RonCitrus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:57:19