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

如何使用Newtonsoft序列化含反斜杠的VB.NET对象

问题解决:Newtonsoft.Json 序列化时保留单个反斜杠的 Unicode 转义序列

你的核心问题是:字符串中存储的是字面量的 \uD83D\uDE00(即包含\、u、D等普通字符),但 Newtonsoft.Json 默认会将字符串中的\转义为\\,导致输出不符合预期。以下是两种基于 Newtonsoft 原生能力的解决方法:


方案1:将字面量转义序列转为实际 Unicode 字符

如果你的最终目标是让 JSON 解析后得到 Emoji 表情,而非保留\uXXXX文本格式,可以先把字面量转义序列转换为实际的 Unicode 字符,再进行序列化:

' 将字面量的\u序列转为实际Emoji字符
Dim emojiText As String = Newtonsoft.Json.JsonConvert.DeserializeObject(Of String)("""\uD83D\uDE00""")
Dim msgObject As New Message With {.Emoji = emojiText}

' 序列化时配置转义非ASCII字符,即可输出\u格式的序列
Dim settings As New JsonSerializerSettings With {
    .StringEscapeHandling = StringEscapeHandling.EscapeNonAscii
}
Dim msgJson As String = Newtonsoft.Json.JsonConvert.SerializeObject(msgObject, settings)

输出结果:

{"Emoji":"\uD83D\uDE00"}

方案2:自定义 JsonConverter 强制保留原始转义序列

如果必须直接输出字面量的\uXXXX作为 JSON 转义序列(不转换为实际字符),可以自定义转换器跳过 Newtonsoft 的自动转义逻辑:

Public Class RawUnicodeSequenceConverter
    Inherits JsonConverter(Of String)

    Public Overrides Sub WriteJson(writer As JsonWriter, value As String, serializer As JsonSerializer)
        If value Is Nothing Then
            writer.WriteNull()
            Return
        End If
        ' 直接写入原始字符串,关闭自动转义
        writer.WriteRawValue("""" & value & """")
    End Overrides

    Public Overrides Function ReadJson(reader As JsonReader, objectType As Type, existingValue As String, hasExistingValue As Boolean, serializer As JsonSerializer) As String
        Return reader.Value?.ToString()
    End Function
End Class

使用方式:

Dim msgObject As New Message With {.Emoji = "\uD83D\uDE00"}

Dim settings As New JsonSerializerSettings()
settings.Converters.Add(New RawUnicodeSequenceConverter())
Dim msgJson As String = Newtonsoft.Json.JsonConvert.SerializeObject(msgObject, settings)

输出结果:

{"Emoji":"\uD83D\uDE00"}

注意:方案2需要确保输入字符串是合法的 JSON 转义序列,否则可能导致 JSON 格式错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:50:21