C #, как удалить символы в значениях JObject? - PullRequest
0 голосов
/ 11 марта 2019

У меня есть некоторый код 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, которая позволяет мне удалять строку.

Я ценю вашу помощь. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Я обнаружил, что проблема заключалась в том, что я пытался скрыть уже неэкранированную строку.

field.Value<string>() уже удаляет строку. Таким образом, решением моей проблемы было просто не вызывать Regex.Unescape и использовать значение напрямую.

Извините.

0 голосов
/ 12 марта 2019

Проблема связана с двойной обратной косой чертой "\\ 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 !
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...