F# 将类型的缺失值反序列化为特定值
我已经创建了一个名为F# 将类型的缺失值反序列化为特定值,f#,json.net,F#,Json.net,我已经创建了一个名为Skippable的包装器类型= |跳过 |"a"的连载 我有功能正常的转换器,但在反序列化过程中,我希望将缺少的JSON值序列化为DU的Skip情况(而不是当前发生的null) 我知道DefaultValueAttribute,但这只适用于常量值,而且我不想在DTO中的每个Skippable-wrapped属性上使用属性 是否有可能以某种方式告诉Newtonsoft.Json填充某一类型的缺失值(skipable创建skipable结构联合是一种方法,因为默认值(例如,使
Skippable的包装器类型=
|跳过
|"a"的连载
我有功能正常的转换器,但在反序列化过程中,我希望将缺少的JSON值序列化为DU的Skip
情况(而不是当前发生的null
)
我知道DefaultValueAttribute
,但这只适用于常量值,而且我不想在DTO中的每个Skippable
-wrapped属性上使用属性
是否有可能以某种方式告诉Newtonsoft.Json填充某一类型的缺失值(
skipable创建skipable
结构联合是一种方法,因为默认值(例如,使用未选中。defaultOf
)似乎是任何字段的第一种情况(在本例中为无)按其默认值
[<Struct>]
type Skippable<'a> =
| Skip
| Serialize of 'a
// Unchecked.defaultof<Skippable<obj>> = Skip
[]
键入Skippable为Skippable
编写自定义转换器?同意,转换器在这种情况下工作良好。您可以从haf的OptionConverter中获得灵感:转换器在这里似乎没有帮助,因为它似乎没有为输入JSON中完全缺失的属性调用。不过,我找到了一个潜在的修复方法(添加了答案)。
[<Struct>]
type Skippable<'a> =
| Skip
| Serialize of 'a
// Unchecked.defaultof<Skippable<obj>> = Skip