Как удалить из строки динамическую часть?

#javascript #reactjs

#javascript #reactjs

Вопрос:

Привет, я новичок, будьте снисходительны, пожалуйста 🙂

Я создаю генератор тегов с большим количеством динамических значений, и вот окончательный результат :

1554710490545:[B@773c0cef:{«заголовок»:{«EventID»: «c0afad22-6472-4f23-9a5d-1c5e0b48024e«, «tmst»: «1554710490545«, «agencyId»: «tazz«, «CustomerID»:»02c«, «тип»: » EzNavigationHitPayload загрузить»},»trackingEzNavHit»: {«hitBase»:{«hitId»: «8735b582-2be7-4764-ac83-da0e4d2206df«, «ezakusBid»: «a40afeb4-066f-4dc8-9de6-e450facecee9«, «tmst»: «1554710490545«, «wid»: » самый широкий«,»cookieOk»: true, «UserAgent»: «Mozilla /5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/73.0.3683.86 Safari/537.36″, «IPv4»: «77.154.199.100«, «ezCustom»: {«eznode»:»gfnode-001«,»version»:»4.0.10«},»agencyId»:»tazz«,»CustomerID»:»02c«}, «ezVarious»: {«игнорировать»:»STRING_TO_CHECK»}}}

Я хотел бы сохранить только эту часть :

{«hitId»: «8735b582-2be7-4764-ac83-da0e4d2206df», «ezakusBid»: «a40afeb4-066f-4dc8-9de6-e450facecee9», «tmst»: «1554710490545», «wid»: «widtest», «cookieOk»: true, «UserAgent» :»Mozilla /5.0 (Windows NT 10.0; Win64; x64) AppleWebKit /537.36 (KHTML, как Gecko) Chrome / 73.0.3683.86 Safari / 537.36″, «IPv4″:»77.154.199.100», «ezCustom»: {«eznode»:»gfnode-001″, «version»:»4.0.10″},»agencyId»:»tazz»,»CustomerID»:»02c»}, «ezVarious»:{«игнорировать»:»STRING_TO_CHECK»}}}

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

Комментарии:

1. Скажите нам, на каком основании вы хотите исключить часть.

2. Просто говорю, но генерировать случайные идентификаторы и не сохранять их для дальнейшей навигации в вашей модели данных, вероятно, не очень эффективный шаблон. Использование большого регулярного выражения, когда у вас есть JSON, который можно разобрать и просто использовать, только показывает, что что-то не так.

3. Пожалуйста, не форматируйте вывод в формате JSON, просто опубликуйте его в необработанном и улучшенном виде.

Ответ №1:

Это данные json. Таким образом, вы можете получить доступ к значению по ключу, который вы хотите. Например, сначала возьмите пустой json

  let output={}
 output["hintId"]= data.hintId
 output["ezakusBid"] = data.ezakusBid

And you can create new json data as your wish
  

Ответ №2:

Если у вас есть доступ к JSON, то используйте его, вместо синтаксического анализа строки… Вот динамический способ доступа к trackingEzNavHit.hitBase , если первые ключи могут время от времени отличаться.

 const json = {
  "1554710490545": {
    "B@773c0cef": {
      "header": {
        "eventId": "c0afad22-6472-4f23-9a5d-1c5e0b48024e",
        "tmst": "1554710490545",
        "agencyId": "tazz",
        "customerId": "02c",
        "type": "EzNavigationHitPayload"
      },
      "trackingEzNavHit": {
        "hitBase": {
          "hitId": "8735b582-2be7-4764-ac83-da0e4d2206df",
          "ezakusBid": "a40afeb4-066f-4dc8-9de6-e450facecee9",
          "tmst": "1554710490545",
          "wid": "widtest",
          "cookieOk": true,
          "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36",
          "ipV4": "77.154.199.100",
          "ezCustom": {
            "eznode": "gfnode-001",
            "version": "4.0.10"
          },
          "agencyId": "tazz",
          "customerId": "02c"
        },
        "ezVarious": {
          "ignore":"STRING_TO_CHECK"
        }
      }
    }
  }
};

console.log(json[Object.keys(json)[0]][Object.keys(json[Object.keys(json)[0]])].trackingEzNavHit.hitBase);  

Комментарии:

1. 1554710490545:[B@773c0cef — это единственная сгенерированная зашифрованная строка, не являющаяся частью json. почему вы изменили [ на {? вы даже можете проверить закрывающие фигурные скобки для подтверждения.

2. вы уверены? для меня это выглядит как два ключа, и он забыл первую и последнюю части структуры json. tmst совпадает с первыми числами.

Ответ №3:

С первой фигурной скобки { все кажется JSON.

Таким образом, вы можете получить строку после этого, используя

 let str = `1554710490545:[B@773c0cef:{"header":{"eventId":"c0afad22-6472-4f23-9a5d-1c5e0b48024e", "tmst":"1554710490545","agencyId":"tazz","customerId":"02c", "type":"EzNavigationHitPayload"},"trackingEzNavHit": {"hitBase":{"hitId":"8735b582-2be7-4764-ac83-da0e4d2206df", "ezakusBid":"a40afeb4-066f-4dc8-9de6-e450facecee9","tmst":"1554710490545", "wid":"widtest","cookieOk":true, "userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36","ipV4":"77.154.199.100","ezCustom": {"eznode":"gfnode-001","version":"4.0.10"},"agencyId":"tazz","customerId":"02c"}, "ezVarious":{"ignore":"STRING_TO_CHECK"}}}`;

let x = str.match(/({.*})/);
console.log(JSON.parse(x[1]).trackingEzNavHit)