Экранирование символов в jpath

Поддержка
  • Помогите разобраться. Пытаюсь распарсить json

    {"sheets":[{"name":"Sheet1","data":[["CMA07-W(870-1500)","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,511010000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""],["CMA07-W(870-1500)","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,710000000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""]]}]}
    

    в котором находится CMA07-W(870-1500), следующим образом

    .sheets[0].data[?(@[0] == 'CMA07\-W\(870\-1500\)')]
    

    Символы вроде экранирую, но все равно выдает синтаксическую ошибку. Направьте пожалуйста в каком направлении копать.

  • @John_Bradley said in Экранирование символов в jpath:

    .sheets[0].data[?(@[0] == 'CMA07-W(870-1500)')]

    Разобрался, если поставить двойные кавычки, то работает. Чудеса.

  • Теперь новый головняк, если надо найти значение KR0601437U00 Bosch GLI 10,8 V-LI, экранирую символы

    .sheets[0].data[?(@[0] == "KR0601437U00\ Bosch\ GLI\ 10\,8\ V\-LI")]
    

    Паршу JSON

    {"sheets":[{"name":"Sheet1","data":[["KR0601437U00 Bosch GLI 10,8 V-LI","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,511010000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""],["CMA07-W(870-1500)","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,710000000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""]]}]}
    

    Если убрать запятую в "10,8" то находит. Где ошибка?

  • Try this with Get value

    .sheets[0].data[0][0]
    

    Or Get all value method

    .sheets[0].data[*][0]
    
  • @jinmvp Не подойдет, надо парсить json по артикулу

  • @John_Bradley I dont really understand what you want to parse in that json? Posted the result you want and ill try to parse it for you.

  • @JinMVP

    Finds

    {"sheets":[{"name":"Sheet1","data":[["KR0601437U00 Bosch GLI 108 V-LI","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,511010000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""],["CMA07-W(870-1500)","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,710000000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""]]}]}
    
    .sheets[0].data[?(@[0] == "KR0601437U00\ Bosch\ GLI\ 108\ V\-LI")]
    

    ***************************************************************************.

    Does not find

    {"sheets":[{"name":"Sheet1","data":[["KR0601437U00 Bosch GLI 10,8 V-LI","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,511010000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""],["CMA07-W(870-1500)","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,710000000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""]]}]}
    
    .sheets[0].data[?(@[0] == "KR0601437U00\ Bosch\ GLI\ 10\,8\ V\-LI")]
    

    Как экранировать запятую в этом случае?

  • You mean you want to get this value ?
    a01a0a36-2d9f-4b89-9427-99b1ac6dfbb5-image.png
    If thats the case try the above.
    4b78a8f3-9731-4eab-928c-294c4637b372-image.png

  • @JinMVP said in Экранирование символов в jpath:

    If thats the case try the above

    No. I need to get all values by SKU (KR0601437U00 Bosch GLI 10,8 V-LI), not just the first one.

  • @John_Bradley You must post the full json for me to parse, cant really understand what you mean by that. You can just use get all values.

  • @JinMVP said in Экранирование символов в jpath:

    @John_Bradley You must post the full json for me to parse, cant really understand what you mean by that. You can just use get all values.

    Мне не надо получать все значения и не надо получать только первое. Надо распарсить json по артикулу. Проблема в экранировании запятой в артикуле. Ладно, забей. Не понимаешь ты меня. Может кто другой подскажет.

  • В общем нашел решение, если кому-то пригодится:

    1. распарсить JSON в двумерный массив
    .sheets[0].data[*]
    
    1. отфильтровать двумерный массив по значению
    [[RESULT]] = [[PARSED_JSON_VALUES]].filter(function (e) { return (e)[0] == 'KR0601437U00 Bosch GLI 10,8 V-LI'})
    

  • 0 Votes
    8 Posts
    858 Views
  • 0 Votes
    6 Posts
    1010 Views
  • Запрос в БД

    Поддержка
    0 Votes
    1 Posts
    353 Views
  • Цикл в xpath

    Поддержка
    0 Votes
    5 Posts
    857 Views
  • 0 Votes
    2 Posts
    922 Views