c# - 如何不序列化默认值

标签 c# json azure

我情不自禁地看着我空空如也的口袋,想知道我的网络应用程序中是否有可以掏的一分钱。
看着我一直吐出的 JSON,我不禁想知道是否有一种方法可以不序列化默认值,例如:

{
"gservs": {
  "EmpresaId": 1044,
  "GservsId": 7,
  "Descricao": "Cabelos"
},
"EmpresaId": 1044,
"ServicosId": 97,
"GServsId": 7,
"Descricao": "auxiliar geral",
"Informativo": "",
"simNao": false,
"PermiteEncaixe": false,
"UsaQuimica": false,
"CustosGerais": 0.0000,
"Preco": 0.0000,
"Comissao": 0.0000,
"ValPercComissao": "P",
"TipoComissao": false,
"ValPercCustos": "P",
"TipoCusto": false,
"ServicoAux": true,
"ValPercComisAux": "P",
"TipoComissaoAux": false,
"IncidComisAux": "A",
"DiasRetorno": 0,
"TempoExecucao": "00:00:00",
"TempoHora": 0,
"TempoMinMarcacao": 0,
"TempoHoraMarcacao": 0,
"TempoMin": 0,
"Ativo": false,
"Mobilidade": false,
"PermiteSimultaneidade": false,
"ParticipaMilhagem": true
}

如果你检查一下,你可以算出默认值浪费了 406 个字节。我的估计是,在正常的一天结束时,我将浪费大约 1 美元(我在 Azure 区域 3 - 巴西南部),浪费带宽...

不久前我了解到我可以告诉 JsonSerializer 忽略 null 的属性,那么我也可以对“默认”值执行相同的操作吗?

最佳答案

JSON.net 有一个 DefaultValueHandling 枚举来应对不同的场景。尝试类似的东西

var serialiserSettings = 
    new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });

然后在将对象序列化为 JSON 时使用它。这将删除任何具有默认值的内容。

关于c# - 如何不序列化默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42584194/

相关文章:

ruby-on-rails - Rails 4 渲染 json 嵌套对象

sql-server - 如何检查Azure SQL数据库中是否已存在数据库用户

c# - 如何避免在 ASP.NET 代码隐藏中编写困惑的 JavaScript?

c# - 将接口(interface)转换为其具体实现对象,反之亦然?

json - Angular 4 api调用转向对json的响应返回undefined

azure - 如何在Azure模板中多次复制小节?

c# - botbuilder 不等待来自 HTTP 响应的响应(使用 Restsharp)

c# - 在 DataGrid 中的行之间导航

c# - 针对本地主机相对 url "Cannot assign requested address"的请求

java - Hibernate 是否支持 Postgres 9.2 Json 数据类型?