Помогите разобраться с js и корявым модулем jsonpath

Поддержка
  • @kroda в действие выполнить код

    var json = JSON.parse([[NEW_VARIABLE]])
    for (var i = 0; i < json.barcodes.length; i++){
    if (json.barcodes[i].accessToken == "пример2"){
    [[LINK]] = json.barcodes[i].link
    [[PHONE]] = json.barcodes[i].phone
    }}
    

    Где в переменной [[NEW_VARIABLE]] находится ваш "ответ в виде джисона"
    На выходе в переменной [[LINK]] будет 791228276b47cad415895ecca408f524
    А в [[PHONE]] будет iphone7

  • @uraabk said in Помогите разобраться с js и корявым модулем jsonpath:

    А в [[PHONE]] будет iphone7

    Не знаю почему, но у меня крашится бас после этого кода.

    Думал сначала из-за 20к объектов, но потом проверил с одним все равно креш.

  • @kroda said in Помогите разобраться с js и корявым модулем jsonpath:

    @uraabk said in Помогите разобраться с js и корявым модулем jsonpath:

    А в [[PHONE]] будет iphone7

    Не знаю почему, но у меня крашится бас после этого кода.

    Думал сначала из-за 20к объектов, но потом проверил с одним все равно креш.

    Забавно, а у меня работает, с тем, что вы предоставили.
    Попробуйте создать новый xml и сделать в нем два действия первое установить переменную [[NEW_VARIABLE]] с этим json и второе выполнить код.

  • @uraabk said in Помогите разобраться с js и корявым модулем jsonpath:

    Забавно, а у меня работает, с тем, что вы предоставили.
    Попробуйте создать новый xml и сделать в нем два действия первое установить переменную [[NEW_VARIABLE]] с этим json и второе выполнить код.

    Все в порядке, это я допустил ошибку, из-за креша даже не сразу увидел.
    На 20 к объектов этот код крашит бас.

    А на 1 объекте результат что-то вроде:

    {
        accessToken: "пример",
        created: "2019-05-20 11:05:17",
      },
    

    Не суть, смысл в том, что тоже нет кавычек.

    Хорошо, тогда другой вопрос, есть ли способ выдрать велью из ключа линк, который я спарсил с помощью jpath?

    Мне всего-то нужно значение линк из:

     [
        {
          accessToken: "пример2",
          created: "2018-12-09 20:26:17",
          link: "791228276b47cad415895ecca408f524",
          phone: "iphone7""
        }
      ],
    
  • @kroda Сто раз прочитал, так и не понял, что у вас не так. Если вам нужно вытащить данные из готового объекта, а судя по тому что выводит JSONPath через модуль и сайт (сайт кстати почти тот же модуль использует), это есть готовый объект, с помощью модуля - делайте JSON.stringify([[ПЕРЕМЕННАЯ_С_ОБЪЕКТОМ]]) когда выбираете строку для парсинга в модуле, ну и соответственно тип expression.

    UPD. имейте в виду, что для такого объекта путь будет уже другой, т.е. $.phone, $.link и т.д

  • @oyasumi-punpun said in Помогите разобраться с js и корявым модулем jsonpath:

    stringify

    Заходим на сайт:http://jsonpath.com/

    вводим все из первого поста и получаем:

    [
      {
        "created": "2018-12-09 20:26:17",
        "phone": "iphone7",
        "accessToken": "пример2",
        "link": "791228276b47cad415895ecca408f524"
      }
    ]
    

    Заходим в бас и делаем все тоже самое, получаем:

     [
        {
          accessToken: "пример2",
          created: "2018-12-09 20:26:17",
          link: "791228276b47cad415895ecca408f524",
          phone: "iphone7""
        }
      ],
    

    Вы пишите :"Если вам нужно вытащить данные из готового объекта, а судя по тому что выводит JSONPath через модуль и сайт (сайт кстати почти тот же модуль использует), это есть готовый объект"

    Чтобы вот этот ответ баса был объектом:

     [
        {
          accessToken: "пример2",
          created: "2018-12-09 20:26:17",
          link: "791228276b47cad415895ecca408f524",
          phone: "iphone7""
        }
      ],
    

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

    А именно, как мне использовать JSON.stringify([[ПЕРЕМЕННАЯ_С_ОБЪЕКТОМ]]) в модуле который не хочет работать с ответами такого типа

  • @kroda Прежде чем утверждать о том, что модуль неправильно работает, нужно было бы протестировать некоторые моменты.

    Ключи спокойно получаются без кавычек.

    Возьмите вашу JSON-строку, и установите переменную с помощью JSON.parse(переменная_со_строкой), и посмотрите как в инспекторе переменных выглядит ваш JSON. Ни у каких ключей в инспекторе никогда нет кавычек.

    Однако, если вы попробуете сделать вывод в лог JSON.stringify(объект_json), то увидите, что кавычки есть и это обычный валидный JSON. Какой ключ вам нужно вытащить? Например

    $.barcodes[?(@.accessToken=="пример2")].[*]
    

    Выдаст массив со списком ключей для данного объекта

  • @oyasumi-punpun said in Помогите разобраться с js и корявым модулем jsonpath:

    Ключи спокойно получаются без кавычек.

    Да, вы правы, я совсем забыл что в js нет ковычек, но это не помешало мне не спарсить даже методом через жс.

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

    Насчет JSON.stringify, все получилось, ура. Вот я об этом и говорю с самого первого
    поста. Зачем работая с джисон массивом через синтаксис предназначенный только для джисона мне необходимо в случае поочередного парса возвращать жс обратно в джисон. Не проще было бы сделать для таких людей как я(ноль в программировании, тем более в жс) как на сайте, тоесть из джисона приходит ответ в виде джисона, а не в виде жс.

    Я хотел по конкретному значению токена найти кокретное значение линк.

    Если покажите как это сделать за 1 парс (а не как у меня сейчас через костыль обратного возвращения в джисон stringify) командой $.barcodes[?(@.accessToken=="пример2")] (что тут дальше написать?)

    Буду очень признателен!

  • @kroda said in Помогите разобраться с js и корявым модулем jsonpath:

    $.barcodes[?(@.accessToken=="пример2")]

    $.barcodes[?(@.accessToken=="пример2")].link
    

    Через экшен 'Получить значение' - получите на выходе значение 'link' у 'barcode' c токеном, равным 'пример2'.

  • @oyasumi-punpun said in Помогите разобраться с js и корявым модулем jsonpath:

    Через экшен 'Получить значение' - получите на выходе значение 'link' у 'barcode' c токеном, равным 'пример2'.

    Не успел изменить сообщение, уже успел сам понять

    Огромное спасибо!