我有一个字符串(文本),我想使用JSON解析器进行转换,以便它对JavaScript友好。
在我的查看页面中,我有一些看起来像这样的javascript:
var site = {
strings: {
addToCart: @someValue,
因此@someValue应该是JavaScript安全的,例如双引号,需要时转义的字符等。
该值@someValue是一个字符串,但必须对JavaScript友好,因此我想使用JSON进行解析。
新的System.Text.Json有东西吗?
我尝试过:
return System.Text.Json.JsonDocument.Parse(input).ToString();
但这不起作用,因为我的文本只是一个字符串,而不是JSON字符串。
还有其他解析方式吗?
答案 0 :(得分:1)
转义字符串以使其成为JSON安全的规则如下:
尽管并非绝对必要,但可以将任何非Web安全字符(即任何非ASCII字符)转换为等效的转义Unicode,以避免潜在的编码问题。
由此,创建您自己的转换方法非常简单:
public static string MakeJsonSafe(String s)
{
var jsonEscaped = s.Replace("\\", "\\\\")
.Replace("\"", "\\\"")
.Replace("\b", "\\b")
.Replace("\f", "\\f")
.Replace("\n", "\\n")
.Replace("\r", "\\r")
.Replace("\t", "\\t");
var nonAsciiEscaped = jsonEscaped.Select((c) => c >= 127 ? "\\u" + ((int)c).ToString("X").PadLeft(4, '0') : c.ToString());
return string.Join("", nonAsciiEscaped);
}
(就像我说的那样,nonAsciiEscaped
阶段可以省略,因为它不是绝对必要的。)