簡體   English   中英

如何將字符串轉換為 JSON 友好字符串?

[英]How to convert a string to JSON friendly string?

我有一個字符串(文本),我想使用 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 字符串。

還有另一種解析方法嗎?

escaping 字符串使它們 JSON 安全的規則如下:

  • 退格替換為 \b
  • 換頁符替換為 \f
  • 換行符替換為 \n
  • 回車替換為 \r
  • 制表符替換為 \t
  • 雙引號替換為\"
  • 反斜杠替換為 \\

雖然這不是絕對必要的,但任何非網絡安全字符(即任何非 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階段可以省略,因為它不是絕對必要的。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM