Unity使用NewtonSoft json插件反序列化为空时报错
起因是在做一个扫码功能时,需要轮询用户的扫码状态。
返回状态类中有为空字段,这个时候可能会报空指针的错误提示
比如原本代码为:
private bool GetActiveState(string jsonData) { var data = JsonConvert.DeserializeObject<YGXJ_QRActiveData>(jsonData); return data.result.activated; }
在反序列化时就会在这里异常然后跳出逻辑,我们可以通过自定义序列化设置来规避这样的异常跳出问题
private bool GetActiveState(string jsonData) { Debug.Log(jsonData); var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; var data = JsonConvert.DeserializeObject<YGXJ_QRActiveData>(jsonData,settings); return data.result.activated; }
通过自定义设置,可以正常返回,即使是null,也可以正常返回试做false,不影响逻辑