У меня есть код Javascript, встроенный в некоторые поля JSON.
Например:
{
"elements": [{
"bindingParams": "return field.innerHTML.match(/\\d+/gi).toString();\n"
}]
}
И я хочу записать этот код в новый файл. Дело в том, что когда этот Javascript устанавливается как значение для JObject, символы новой строки и другие символы в качестве обратной косой черты экранируются.
Я пытался использовать Regex.Unescape(field.Value<string>()), но я получаю сообщение об ошибке в полях с \\d
Ошибка parsing 'field.innerHTML.match(/\\d+/gi).toString();' - Unrecognized escape sequence \\d.
Я всегда мог бы использовать field.Value<string>().Replace("\\n", "\n).Replace("\\","\").Etc(...), но я не знаю, какие последовательности экранирует Newtonsoft JObject.
Я хотел бы знать escape-символы, которые использует Newtonsoft, или метод/функцию от Newtosoft, которая позволяет мне отменить экранирование строки.
Я ценю вашу помощь. Заранее спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Двойная обратная косая черта "\\d" вызывает проблему.
Перед разбором jsonString попробуйте заменить их следующим образом:
var jsonString = "{\"elements\": [{\"bindingParams\": \"return field.innerHTML.match(/\\d+/gi).toString();\n\"}]}";
jsonString = jsonString .Replace("\\", "\\\\"); // <=== this line
var o = JObject.Parse(jsonString); // This works !
Я узнал, что проблема заключалась в том, что я пытался удалить уже неэкранированную строку.
field.Value<string>() уже не экранирует строку. Таким образом, решение моей проблемы состояло в том, чтобы просто не вызывать Regex.Unescape и использовать значение напрямую.
Извиняюсь.
Это может помочь, хотя раньше я этим не пользовался - newtonsoft.com/json/help/html/…