VB.Net中如何让JSON格式字符串仅包含单个双引号
VB.NET 修复JSON字符串双引号重复转义问题
问题场景
开发过程中拿到存在双引号重复转义的异常JSON内容:
"{""head"":{""clientID"":""100088optimumremit"",""reqTime"":""2022-01-20T15:06:58+08:00"",""reqMsgID"":""GcashValidate85"",""clientSecret"":""100088optimumremit""},""body"":{""merchantID"":""100088"",""codeString"":""123456"",""codeType"":""REFERENCE_CODE""}}"
需要转换为标准JSON格式,目标结果如下:
{"head":{"clientID":"100088optimumremit","reqTime":"2022-01-20T15:06:58+08:00","reqMsgID":"GcashValidate85","clientSecret":"100088optimumremit"},"body":{"merchantID":"100088","codeString":"123456","codeType":"REFERENCE_CODE"}}
处理方案
方案1:直接字符串替换(简单场景适用)
如果确认字符串仅存在双引号重复转义、无其他格式问题,可直接通过字符串替换处理:
' 假设存储异常JSON的变量为 badJson Dim standardJson As String = badJson.Trim().Trim(""""c).Replace("""""", """")
逻辑说明:
- 先通过
Trim(""""c)移除字符串首尾多余的包裹双引号 - 再通过
Replace("""""", """")将字符串内所有连续两个双引号替换为单个双引号,VB.NET语法中字符串字面量内连续两个双引号代表一个实际的双引号字符
方案2:JSON反序列化处理(推荐,鲁棒性更强)
如果担心直接替换破坏合法JSON结构,可使用JSON处理库(如Newtonsoft.Json)做反序列化处理,自动处理所有转义逻辑,不会出现替换错误:
Imports Newtonsoft.Json.Linq ' 第一次反序列化将转义后的JSON字符串值解析为普通原生字符串 Dim standardJson As String = JToken.Parse(badJson).ToObject(Of String)()
逻辑说明:
- 重复转义的JSON本质是「被二次序列化为字符串的JSON内容」,反序列化过程会自动还原所有转义字符,直接得到标准格式的JSON字符串
- 该方式不会误判JSON内容中合法的双引号场景,适配所有复杂JSON结构
内容的提问来源于stack exchange,提问作者John Andrew Manaligod
相关产品推荐
相关产品推荐

