如何将字符串转换为JSON友好字符串?

布兰克曼

我有一个要使用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字符串。

还有其他解析方式吗?

阿比恩47

转义字符串以使其成为JSON安全的规则如下:

  • 退格键替换为\ b
  • 换页符替换为\ f
  • 换行符替换为\ n
  • 回车换成\ r
  • 制表符替换为\ t
  • 双引号替换为\“
  • 反斜杠替换为\\

并且,尽管并非绝对必要,但可以将任何非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可以省略阶段,因为它不是绝对必要的。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章