我有一个用C#编写的WebApi。在这个WebApi中,我将收到的JSON转换为类。让C1成为这些类别中的一个。 C1分别包含类型T1和T2以及T3的属性P1和P2和P3。
客户端必须发送一个PUT请求,该请求构建一个携带此信息的JSON:
C#类无法区分第二和第三种情况,因为没有“未定义”这样的事情。变量的状态因此我的问题是将我的JSON序列化为C1而不丢失这些信息。
我知道的大多数序列化程序都会采取相应的策略:
JSON中的null,absent或undefined值将导致相应类的属性中出现空值。
这些是我的解决方案:
Optional#IsDefined
中,以确定它是否已定义,Options#Value
可以检索实际值。 #39;定义。当我收到JSON时,我遵循这个策略:如果JSON属性设置为 undefined 或不存在,那么我将相应的C1属性设置为
Optional<T1>.absent()
,如果JSON属性等于null我设置C1& #39; s属性为null。
如果JSON属性设置为特定值,我决定 undefined 我将属性设置为我的数据库中已存在的属性。如果属性为null,我将类的属性设置为null。
避免这种信息丢失的最佳策略是什么?
哪个选项更好(知道第一个选项意味着我的团队会重新考虑成本)?
有没有比我曝光的更好的选择?