第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當(dāng) JSON 中缺少屬性且不可為 null 時,如何拋出 JsonSerialization

當(dāng) JSON 中缺少屬性且不可為 null 時,如何拋出 JsonSerialization

C#
溫溫醬 2023-09-24 15:59:09
當(dāng)反序列化缺少屬性的 JSON 字符串時,我的類中的這些屬性將使用其默認(rèn)值進(jìn)行填充。我想更改JsonSerializerSettings,以便如果 JSON 中缺少某個屬性并且該屬性在類中不可為空,則會引發(fā)異常。相反,當(dāng)屬性可為空時,則不需要它。我知道屬性是可能的,但我想要一個通用設(shè)置。JsonSerializerSettings settings = new JsonSerializerSettings();MyParameters parms = JsonConvert.DeserializeObject<MyParameters>(json, settings);例子:public class MyParameters{    public string Message1 { get; set; }    public string Message2 { get; set; }    public int MyInt { get; set; }    public int? MyNullableInt { get; set; }}以下 JSON 應(yīng)該是可反序列化的:{    "Message1": "A message",    "MyInt ": 1}結(jié)果:Message1 = "A message"Message2 = nullMyInt = 1MyNullableInt = null但以下 JSON 應(yīng)該會導(dǎo)致異常,因為MyInt缺少:{    "Message1": "A message",    "MyNullableInt": 1}
查看完整描述

1 回答

?
神不在的星期二

TA貢獻(xiàn)1963條經(jīng)驗 獲得超6個贊

您可以使用自定義ContractResolver來執(zhí)行您想要的操作:

class NonNullablePropertiesRequiredResolver : DefaultContractResolver

{

? ? protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)

? ? {

? ? ? ? JsonProperty prop = base.CreateProperty(member, memberSerialization);

? ? ? ? Type propType = prop.PropertyType;

? ? ? ? if (propType.IsValueType && !(propType.IsGenericType && propType.GetGenericTypeDefinition() == typeof(Nullable<>)))

? ? ? ? {

? ? ? ? ? ? prop.Required = Required.Always;

? ? ? ? }

? ? ? ? return prop;

? ? }

}

反序列化時將解析器應(yīng)用到您的應(yīng)用程序中JsonSerializerSettings,如下所示:


JsonSerializerSettings settings = new JsonSerializerSettings();

settings.ContractResolver = new NonNullablePropertiesRequiredResolver();

MyParameters parms = JsonConvert.DeserializeObject<MyParameters>(json, settings);

工作演示: https:?//dotnetfiddle.net/t56U2a


查看完整回答
反對 回復(fù) 2023-09-24
  • 1 回答
  • 0 關(guān)注
  • 138 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號