2014-01-03 2 views
3

У меня есть допустимая строка JSON, как показано ниже: - DEMOДействительно JSON дает ошибку при разборе - Uncaught SyntaxError: Неожиданный маркер S

[ 
    { 
     "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" 
     } 
     ] 
    } 
] 

Когда я JSON.parse он бросает ошибку, как: -

Uncaught SyntaxError: Unexpected token S 
+0

У вас есть подтверждение Json при использовании любого онлайн-валидатора? –

+0

@AntoKing Да, вот почему я сказал, что его действительный JSON. Я использовал http://jsonformatter.curiousconcept.com/ – Shubh

+0

Просто сейчас с http://jsonlint.com/ также – Shubh

ответ

5

Отправляю комментарии в качестве ответа: вам нужно будет удвоить вашу строку JSON, прежде чем вы сможете разобрать ее с помощью JSON.parse(..).

Давайте возьмем строку, например, \\S. Он состоит из двух символов: '\\', 'S'.

JSON.parse("...\\S...") видит это как обратную косую черту и ожидает после него одно из «n», «r», «t» (или других управляющих символов). Он не ожидает S или d. Следовательно, вы получаете эту ошибку.

Чтобы решить, вам нужно удвоить escape-строку JSON. Нравится: \\\\S & \\\\d.

Смежные вопросы