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

VB.NET构建JSON字符串遇重复双引号问题求助

VB.NET中正确构造JSON字符串的方法

方法一:直接转义双引号

VB.NET中,字符串里的单个双引号需要用两个连续双引号来转义,编译器会自动将其解析为单个双引号。直接按此规则构造你的JSON:

Dim jsonContent As String = " {
 ""BoundaryType"": ""Outside"",
 ""StartTime"": ""2022-12-07T00:00:00"",
 ""EndTime"": ""2022-12-08T00:00:00"",
 ""TagFilter"": ""atagname"",
 ""Delimiter"":"""",
 ""ServerName"": ""aservername""
 }"

方法二:使用逐字字符串(Verbatim String)

用@前缀标记逐字字符串,字符串里的换行、空格会被原样保留,双引号同样用两个连续双引号表示单个,可读性更强:

Dim jsonContent As String = @" {
 ""BoundaryType"": ""Outside"",
 ""StartTime"": ""2022-12-07T00:00:00"",
 ""EndTime"": ""2022-12-08T00:00:00"",
 ""TagFilter"": ""atagname"",
 ""Delimiter"":"""",
 ""ServerName"": ""aservername""
 }"

方法三:通过类序列化生成JSON(推荐)

手动拼接字符串容易出错,更可靠的方式是定义对应的数据模型,用JSON序列化工具自动生成字符串:

  1. 先定义匹配JSON结构的类:
Imports System.Text.Json

Public Class RequestParams
    Public Property BoundaryType As String
    Public Property StartTime As String
    Public Property EndTime As String
    Public Property TagFilter As String
    Public Property Delimiter As String
    Public Property ServerName As String
End Class
  1. 实例化类并序列化:
Dim requestModel As New RequestParams With {
    .BoundaryType = "Outside",
    .StartTime = "2022-12-07T00:00:00",
    .EndTime = "2022-12-08T00:00:00",
    .TagFilter = "atagname",
    .Delimiter = "",
    .ServerName = "aservername"
}

Dim jsonContent As String = JsonSerializer.Serialize(requestModel)

关于你遇到的重复双引号问题

你用!替换再转成Chr(34)的方法绕了弯路,且容易因为字符串定义时的隐性转义导致重复。VB.NET中如果直接写"!",替换后是单个双引号,但如果初始字符串里不小心包含了转义的双引号(即""),替换后就会变成""",最终出现重复。而Visual Studio文本可视化工具会自动将两个连续双引号显示为单个,导致你误以为内容正常,但实际字符串里是重复的双引号,传入函数就会出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:05:19