何种输入会导致JsonSerializer.Deserialize方法返回null值?
问题:什么样的输入会让JsonSerializer.Deserialize返回null?
场景说明:
正常JSON示例:
{ "JsonProp1": "4ADx4ADx", "JsonProp2": "4AH/4ADx", "JsonProp3": "4AKq4ADx" }
对应的C#实体类:
internal class JsonData { public JsonData(byte[] jsonProp1 , byte[] jsonProp2 , byte[] jsonProp3) { JsonProp1 = jsonProp1; JsonProp2 = jsonProp2; JsonProp3 = jsonProp3; } public byte[] JsonProp1 { get; set; } public byte[] JsonProp2 { get; set; } public byte[] JsonProp3 { get; set; } }
执行反序列化的代码:
JsonData? jsonData= JsonSerializer.Deserialize<JsonData>(InputJson);
已知规则:输入格式错误(非JSON格式)会抛出异常;输入语法正确但不兼容,会返回JsonData对象但属性为null。
会返回null的输入情况:
- 输入JSON为显式的
null值:直接传入纯文本null(是JSON原生的null类型,不是字符串"null")。此时反序列化器会直接返回null,不会尝试创建JsonData实例。
示例输入字符串:
null
这是因为JSON语法中null是合法独立值,反序列化到引用类型(JsonData是类)时,System.Text.Json会将JSON的null映射为.NET的null。
内容的提问来源于stack exchange,提问作者THE_GREAT_MARKER
相关产品推荐
相关产品推荐

