Итак, у меня есть этот основной URL
myapp://page/open-slideup-menu?params=${encodeURIComponent(JSON.stringify(this._getDeeplinkParams()))}
Функция _getDeeplinkParams
возвращает и вложенный объект JSON, например
{
header_text: 'Post Options',
cancel_text: 'Cancel',
options: optionsArray
}
optionsArray
имеет видмассив, который имеет вложенный JSON, который может содержать в себе URL-адрес ..
const deletePostAction = {
url: `https://api.com/posts/XXX`,
method: 'DELETE'
};
const deletePostOption = {
text: 'Delete',
action: {
url: `myapp://page/delete-item?id=XXX&action=${JSON.stringify(deletePostAction)}`,
}
};
optionsArray = [deletePostOption];
Как вы можете видеть, у массива опций есть вложенный JSON с URL-адресом внутри него. Мне нужно структурировать URL-адрес внутриdeletePostOption
..
Но он делает его строковым дважды и создает непарсируемую основную глубокую ссылку ..
myapp://page/open-slideup-menu?params={"header_text":"Post Options","cancel_text":"Cancel","options":[{"text":"Delete","action":{"url":"myapp://page/delete-item?id=XXX&action={\"url\":\"https://api.com/posts/XXX\",\"method\":\"DELETE\"}"}}]}
вложенный второй URL-адрес в has \ "в нем .. SO, который делает егоinparsable ..
Любой чистый способ сделать это без .replace(/^\\"g/,'"')
, чтобы все URL-адреса и глубокие ссылки были правильно закодированы, и это работает для большего количества вложенных URL-адресов
Мой идеальный вывод был бы чем-токак это
myapp://page/open-slideup-menu?params={"header_text":"Post Options","cancel_text":"Cancel","options":[{"text":"Delete","action":{"url":"myapp://page/delete-item?id=XXX&action={"url":"https://api.com/posts/XXX","method":"DELETE"}"}}]}
Или, если какой-либо другой стандартный вывод используется в производственных системах, пожалуйста, дайте мне знать