C# 在JSON中使用未定义的特定值是一种不好的做法吗?
我有一个用C#编写的WebApi。在这个WebApi中,我将接收到的JSON转换为类。让我们成为这些课程中的一员。C1分别包含T1、T2和T3类型的属性P1、P2和P3 客户机必须发送一个PUT请求,该请求生成一个包含以下信息的JSON:C# 在JSON中使用未定义的特定值是一种不好的做法吗?,c#,json,asp.net-web-api,C#,Json,Asp.net Web Api,我有一个用C#编写的WebApi。在这个WebApi中,我将接收到的JSON转换为类。让我们成为这些课程中的一员。C1分别包含T1、T2和T3类型的属性P1、P2和P3 客户机必须发送一个PUT请求,该请求生成一个包含以下信息的JSON: 将P1的值更改为另一个值,但不为空 不对P2执行任何操作(保留当前值) 将P3设置为null C#类无法区分第二种和第三种情况,因为变量不存在“未定义”状态,因此我的问题是在不丢失这些信息的情况下将JSON序列化为C1 我所知道的大多数序列化程序都会采用以下策
- 我可以定义一个新类型,它包含实类型T1,并保存此信息,其中成员
确定是否定义了它,而可选#IsDefined
在定义时检索实际值。当我收到JSON时,我遵循以下策略:选项#Value
可选。不存在()
,如果JSON属性等于null,则我将C1属性设置为null
- 我可以确定某些值意味着该值未定义。例如,如果T1是一个整数,我声明最大值表示该值未定义。当我希望服务器忽略这些值时,这样做需要一个JSON来保存特定的值。例如,如果我想忽略一个整数值,我必须将其设置为可能的最大整数值。使用此选项,我必须遵循以下策略:
- 避免信息丢失的最佳策略是什么
- 哪个选项更好(知道第一个选项意味着我的团队需要重新考虑成本)
- 还有比我接触的更好的选择吗