如何在C#中将项目符号等特殊字符转为JSON转义格式?
C# 实现JSON字符串特殊字符转义方案
你需要的是将包含特殊字符的字符串转成符合JSON规范的转义序列,C#里有两种最常用的成熟解决方案,无需手动编写转义逻辑:
1. 使用.NET内置的System.Text.Json(.NET Core 3.0+ / .NET 5+ 原生支持)
直接利用JsonSerializer.Serialize方法,它会自动将所有非ASCII字符(比如项目符号•)转成\uXXXX格式的Unicode转义序列,同时把换行符转成\n,还会处理其他JSON需要转义的字符(比如双引号、反斜杠等)。
代码示例:
using System.Text.Json; // 输入字符串 string input = @"• 3 Ply 330 3/16in x 1/16in(#77) • 25 ft Long X 22 in Wide • 2022 (2) Beltwall Blk Standard 4in (102mm)"; // 序列化得到带双引号的合法JSON字符串值 string jsonString = JsonSerializer.Serialize(input); // 若不需要首尾的双引号(和你的示例输出格式一致),可以截取处理 string finalResult = jsonString.Substring(1, jsonString.Length - 2); // 输出结果:\u2022 3 Ply 330 3/16in x 1/16in(#77)\n\u2022 25 ft Long X 22 in Wide\n\u2022 2022 (2) Beltwall Blk Standard 4in (102mm) Console.WriteLine(finalResult);
2. 使用Newtonsoft.Json(Json.NET,兼容全.NET版本)
如果你的项目是.NET Framework或者需要更灵活的JSON处理,Json.NET的JsonConvert.ToString方法同样可以实现自动转义:
代码示例:
using Newtonsoft.Json; // 输入字符串 string input = @"• 3 Ply 330 3/16in x 1/16in(#77) • 25 ft Long X 22 in Wide • 2022 (2) Beltwall Blk Standard 4in (102mm)"; // 生成带双引号的JSON字符串值 string jsonString = JsonConvert.ToString(input); // 去掉首尾双引号得到目标格式 string finalResult = jsonString.Substring(1, jsonString.Length - 2); // 输出符合要求的转义后字符串 Console.WriteLine(finalResult);
这两种方法都是通用方案,能处理所有JSON规范要求的转义场景,避免手动转义可能出现的遗漏或错误。
内容的提问来源于stack exchange,提问作者HerrimanCoder
相关产品推荐
相关产品推荐

