我的一些合约有很多 int/decimal/short/byte 等属性,这些属性通常具有默认值。
如果它们是默认值,我不想序列化这些属性,因为这最终会占用相当多的带宽,而在我的情况下,这些额外的字节确实会产生影响。这也使得阅读日志需要更多的努力,因为将这些默认值序列化会产生很多不必要的噪音。
我知道您可以使用JsConfig.SerializeFn和RawSerializeFn在这种情况下返回 null ,但这也会影响 List ,这是不可取的。
JsConfig<int>.SerializeFn = value => value == 0 ? null : value.ToString();
有没有其他方法可以防止这些值被序列化?
我能想到的另一种选择是将它们改为可空类型(例如 int?)并将它们的值设置为 null 而不是 0 以防止序列化,但这将涉及更改大量合同......
另一种选择是放弃 ServiceStack 进行 json 序列化并使用开箱即用的Json.NET:http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_DefaultValueHandling.htm