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
    10 Posts
    713 Views
  • 0 Votes
    14 Posts
    1487 Views
  • 0 Votes
    5 Posts
    773 Views
  • BAS и Android

    Поддержка
    0 Votes
    8 Posts
    4365 Views
  • 0 Votes
    6 Posts
    1962 Views