You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止JsonSerializer.Deserialize将Null转换为空字符串

解决System.Text.Json反序列化时null被转为空字符串的问题

你的问题根本不在反序列化环节,而是手动拼接JSON字符串时出了错:当message为null时,字符串插值$"{message}"会直接把null替换成空字符串,导致生成的JSON是{"message": ""},而不是预期的{"message": null}。反序列化拿到的是空字符串,完全是因为输入的JSON本身就不对。

正确的解决办法有两种:

1. 用JsonSerializer生成JSON(推荐)

不要手动拼JSON,直接用JsonSerializer.Serialize把对象序列化成JSON字符串,这样null值会被正确序列化为null:

public async Task GetDocument()
{
    string message = null;
    // 先构造Document对象
    var document = new Document { Message = message };
    // 序列化生成正确的JSON
    var documentMessage = JsonSerializer.Serialize(document);
    var value = GetDocumentMessageObject(documentMessage);

    //Continue code
}

2. 手动拼接时处理null(不推荐)

如果一定要手动构造JSON,需要判断message是否为null,生成对应的JSON片段:

public async Task GetDocument()
{
    string message = null;
    // 当message为null时,直接写"null",否则加引号
    var messageValue = message == null ? "null" : $"\"{message}\"";
    var documentMessage = $"{{\"message\": {messageValue} }}";
    var value = GetDocumentMessageObject(documentMessage);

    //Continue code
}

这样生成的JSON里,message的值会是null,反序列化后就能得到null而不是空字符串了。

内容的提问来源于stack exchange,提问作者Ali Vojdanian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 12:22:18