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

System.Text.Json反序列化含正则字符串时反斜杠丢失,如何解决?

解决System.Text.Json反序列化正则字符串时反斜杠丢失的问题

这本质是JSON转义规则的问题——在JSON规范里,\/是正斜杠的转义写法,反序列化时会被自动解析成普通的/,不是System.Text.Json的异常行为。要保留正则里的反斜杠,分两种情况处理:

情况1:你可以控制JSON的生成

要让反序列化后保留\/,需要在JSON里把反斜杠双重转义,也就是写成\\/。修改后的示例JSON如下:

{
   "urlPattern": "^\\/api\\/v1\\/something\\/(.*some-user-id.*)"
}

这样反序列化后就能得到带反斜杠的正则字符串:^\/api\/v1\/something\/(.*some-user-id.*)

情况2:JSON是外部传入的,无法修改内容

可以自定义一个JsonConverter跳过默认的转义解析,直接读取原始字符串:

using System;
using System.Text.Json;
using System.Text.Json.Serialization;

public class RawStringConverter : JsonConverter<string>
{
    public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        return reader.GetString() ?? string.Empty;
    }

    public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
    {
        writer.WriteStringValue(value);
    }
}

反序列化时添加这个转换器即可:

var options = new JsonSerializerOptions();
options.Converters.Add(new RawStringConverter());
var result = JsonSerializer.Deserialize<YourModel>(jsonString, options);

另外提醒:如果正则里还有其他转义字符(比如\d、\w),同样要在JSON里写成\\d、\\w,否则反序列化后反斜杠也会丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:52:44