JPath и экранирование

Поддержка
  • в json есть строка, содержащая ; (точку с запятой). как её заэкранировать правильно в JSONPath? Через кубик найти значение не ищет элементы, если в строке есть такой символ.
    Как пример

    {
      "data": [
        { "text": "some;text;here" },
        { "text": ";test" },
        { "text": "nosemicolonshere" }
      ]
    };
    

    вот такой запрос находит строку
    $.data[?(@.text == 'nosemicolonshere')]

    а такой не находит
    $.data[?(@.text == ';text')]

    и такой не находит
    $.data[?(@.text == 'some;text;here')]

    Экранирование \ не помогает.
    Причем онлайн-эвалуаторы тоже по разному работают - какие то находят, какие то нет.

    Умные люди подсказали через выполнить код делать:

    const jsonData = {
      "data": [
        { "text": "some;text;here" },
        { "text": ";test" },
        { "text": "nosemicolonshere" }
      ]
    };
    
    const result = jsonData.data.filter(function(item) {return item.text === ';test'});
    
    log(result[0]);
    

    Работает. Но всё таки интересно, как заставить встроенный кубик работать?

  • @mnail84 said in JPath и экранирование:

    а такой не находит
    $.data[?(@.text == ';text')]

    $.data[?(@.text == "\u003Btest")]
    

  • 0 Votes
    3 Posts
    558 Views
  • 0 Votes
    1 Posts
    641 Views
  • 0 Votes
    16 Posts
    1878 Views
  • 0 Votes
    2 Posts
    713 Views
  • 0 Votes
    2 Posts
    929 Views