解析时有效的JSON会出错 - 未捕获的SyntaxError:意外的令牌S.

Shu*_*ubh 3 parsing json

我有一个有效的JSON字符串如下: - DEMO

[
   {
      "field":"Name",
      "rules":[
         {
            "Regex":"\\S",
            "ValidationMessage":" Name cannot be blank."
         },
         {
            "Regex":"^.{1,50}$",
            "ValidationMessage":"Length should not exceeds 50 characters."
         }
      ]
   },
   {
      "field":"Abbreviation",
      "rules":[
         {
            "Regex":"\\S",
            "ValidationMessage":" Abbreviation cannot be blank."
         },
         {
            "Regex":"^.{1,15}$",
            "ValidationMessage":"Length should not exceeds 15 characters."
         }
      ]
   },
   {
      "field":"PhoneNumber",
      "rules":[
         {
            "Regex":"\\S",
            "ValidationMessage":"Phone Number cannot be blank."
         },
         {
            "Regex":"^\\d{10}$",
            "ValidationMessage":"Length must be 10 digits"
         }
      ]
   },
   {
      "field":"SelectedCampus",
      "rules":[
         {
            "Regex":"\\S",
            "ValidationMessage":"Please st Serviced Campus"
         }
      ]
   }
]
Run Code Online (Sandbox Code Playgroud)

当我做JSON.parse时,它会抛出错误: -

Uncaught SyntaxError: Unexpected token S 
Run Code Online (Sandbox Code Playgroud)

Ult*_*nct 5

将我的评论作为答案发布:您需要双重转义JSON字符串,然后才能解析它JSON.parse(..).

比方说,让我们拿一个字符串\\S.它由两个字符组成:'\\', 'S'.

JSON.parse("...\\S...")认为这是一个反斜杠,并期待它之后的'n','r','t'(或其他转义字符)中的一个.它不希望,Sd.因此你得到了那个错误.

要解决此问题,您需要双重转义JSON字符串.喜欢:\\\\S&\\\\d.