Заменить строку на неэкранированную фигурную скобку в JSON - PullRequest
1 голос
/ 16 марта 2019

Я пытаюсь заменить значение в строке на двойное вьющееся (используется почтальоном для подстановки переменных), но каждый раз, когда я пытаюсь заключить в кавычки или экранировать скобки, я всегда получаю дополнительные экранированные кавычки или двойные экранированные скобки,все из которых нарушают подстановку:

Исходная строка:

"header": [{"key": "x-device-auth","value": "\"token\""}]

OriginalString.replace('token','{{token}}')

Результат:

"header":[{"key":"x-device-auth","value":"\"{{token}}\""}]

Если я ищу .replace('\"token\"','{{token}}'), я не получаюматч.Конечная строка должна быть:

"header": [{"key": "x-device-auth","value": "{{token}}"}]

Ответы [ 2 ]

2 голосов
/ 16 марта 2019

Вы должны искать token с двойными кавычками, чтобы избежать их, так как вы также хотите заменить их.

var originalString = '"header": [{"key": "x-device-auth","value": "\\"token\\""}]';
console.log(originalString);
console.log(originalString.replace('\\"token\\"','{{token}}'));

originalString = '"header": [{"key": "x-device-auth","value": "\"token\""}]';
console.log(originalString);
console.log(originalString.replace('"token"','{{token}}'));

Я добавил два случая, один с исходной строкой, фактически содержащей обратную косую черту (первое определение исходной строки).Второй без.Выберите тот, который лучше всего соответствует вашему фактическому вводу: -)

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

Я не вижу, чтобы во входной строке применялись правильные escape-символы.Поскольку вы разместили вопрос в теге javascript, я попробовал ниже использовать javascript, и он дал требуемые результаты.

var str = "\"header\": [[{\"key\": \"x-device-auth\",\"value\": \"token\"}]";
  var res = str.replace('token','{{token}}');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...