反序列化POCO类时如何忽略JSON空数组?(基于Hl7.Fhir.STU3)
解决Hl7.Fhir.STU3反序列化空数组报错问题
方法一:配置解析器允许空集合
Hl7.Fhir.STU3的FhirJsonParser支持通过设置开启空集合兼容,只需实例化解析器时传入带AllowEmptyCollections=true的ParserSettings:
var settings = new ParserSettings { AllowEmptyCollections = true }; var parser = new FhirJsonParser(settings); var resource = parser.Parse<YourResourceType>(jsonContent);
这个配置会让解析器忽略空数组的校验,不会抛出DeserializationFailedException。
方法二:临时修改返回的JSON内容
如果服务器返回的字段不符合FHIR规范(比如规范要求该数组至少一个元素,但服务器返回空数组),可以先手动移除空的supportingInfo字段再反序列化:
// 用Newtonsoft.Json处理JSON(需要引入Newtonsoft.Json包) var jObj = Newtonsoft.Json.Linq.JObject.Parse(jsonContent); if (jObj["supportingInfo"] is Newtonsoft.Json.Linq.JArray arr && arr.Count == 0) { jObj.Remove("supportingInfo"); } var modifiedJson = jObj.ToString(); var parser = new FhirJsonParser(); var resource = parser.Parse<YourResourceType>(modifiedJson);
内容的提问来源于stack exchange,提问作者Steve Borman
相关产品推荐
相关产品推荐

