Помогите разобраться с 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 -
@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'.
Не успел изменить сообщение, уже успел сам понять
Огромное спасибо!