#arrays #json #jmeter
#массивы #json #jmeter
Вопрос:
{«data»: {«callOrders»: [{ «promotionId»: null, «Promotion»: null, «Lines»: [ { «id»: 5105808, «quantity»: 10, «skuId»: 769, «CallID»: 494285, «skuBatchId»: 733, «amountDetails»: { «rate»: 197,53, «grossAmount»: 2232,089 , «Чистая сумма»: 2232.089, «Налоговая сумма»: 256.789, «Налогооблагаемая сумма»: 1975.3, «Промежуточный итог»: 1975.3, «Счет счета»: 0, «Торговый счет»: 0, «Сумма скидки»: 0, «Рекламный счет»: 0, «topUpDiscount»: 0, «__typename»: «AmountDetail» }, «rateDetails»: { «rlp»: 197.53, » rlpWithVat»: 223.2089, «netPrice»: 197.53, «netPriceWithVat»: 223.2089, «__typename»: «RateDetail» }, «SKU»: { «id»: 769, «title»: «H amp; S 2in1 Active Protect 180 ml x 24 [82302894]», «__typename»: «АРТИКУЛ» }, «SKUBatch»: { «priceDetails»: { «rlp»: 197.53, «dlp»: 186.35, «процентная ставка»: 0.13, «mrpSrp»: 250, «mrpStatus»: true, «__typename»: «SKUPrice» }, «batchDetails»: { «batchNumber»: «DEFAULT_BATCH», «__typename»: «SKUBatch» }, «usageDate»: { «производство»: «0000-00-00», «срок действия»: «0000-00-00 «, «__typename»: «SKUUsage» }, «updatedAt»: «2019-11-05», «active»: true, «__typename»: «SKUBatchRate» }, «Promotion»: { «id»: null, «title»: null, «type»: null, «scope»: null, «criterions»: null, «__typename»: «Promotion» }, «promotionId»: null, «distributorId»: 16, «__typename»: «Line», «InStock»: «INSTOCK», «freeSku»: false, «focusedSku»: false }, { «id»: 5105809, «quantity»: 50, «skuId»: 95, «CallID»: 494285, «skuBatchId»: 111, «amountDetails»: { «rate»: 56.89, «grossAmount»: 3214.2852, «netAmount»: 3214.285, «taxAmount»: 369.785, «taxableAmount»: 2844.5, «subTotal»: 2844.5, «billDiscount»: 0, » tradeDiscount»: 0, «Количество скидок»: 0, «promotionDiscount»: 0, «topUpDiscount»: 0, «__typename»: «AmountDetail» }, «rateDetails»: { «rlp»: 56.89, «RLP с НДС»: 64.2857, «netPrice»: 56.89, «netPriceWithVat»: 64.2857, «__typename»: «RateDetail» }, » АРТИКУЛ»: { «id»: 95, «title»: «Whisper Choice 6s x 96 [82252488]», «__typename»: «Артикул» }, «SKUBatch»: { «priceDetails»: { «rlp»: 56,89, «dlp»: 53,67, «процентная ставка»: 0,13, «mrpSrp»: 72, «mrpStatus»: true, «__typename»: «Цена» }, » batchDetails»: { «batchNumber»: «DEFAULT_BATCH», «__typename»: «SKUBatch» }, «usageDate»: { «производство»: «0000-00-00», «истечение срока действия»: «0000-00-00», «__typename»: «SKUUsage» }, «updatedAt»: «2016-08-15», «active»: true, «__typename»: «SKUBatchRate» }, «Продвижение»: { «id»: null, «title»: null, «type»: null, «scope»: null, «criterions»: null, «__typename»: «Promotion» }, «promotionId»: null, «distributorId»: 16, «__typename»: «Line», «InStock»: «INSTOCK», «freeSku»: false, «focusedSku»: false }, { «id»: 5105810, «quantity»: 10, «skuId»: 82, «CallID»: 494285, «skuBatchId»: 551, «amountDetails» : { «ставка»: 281,88, «Общая сумма»: 3185,244, «Чистая сумма»: 3185,244, «Налоговая сумма»: 366,444, «Налогооблагаемая сумма»: 2818,8, «Промежуточный итог»: 2818,8, «Счет счета»: 0, «Торговый счет»: 0, «Сумма скидки»: 0, «Рекламный счет»: 0, «Счет пополнения счета»: 0, «__typename»: «Сумма детали» }, «rateDetails»: { «rlp»: 281,88, «rlpWithVat»: 318,5244, «netPrice»: 281,88, «netPriceWithVat»: 318,5244, «__typename»: «RateDetail» }, «SKU»: { «id»: 82, «title»: «Ариэль Оксиблу 1 кг х 24 [82250306]», «__typename»: «АРТИКУЛ» }, «SKUBatch»: { «priceDetails»: { «rlp»: 281,88, «dlp»: 268,45, «процентная ставка»: 0.13, «mrpSrp»: 344, «mrpStatus»: true, «__typename»: «SKUPrice» }, «batchDetails»: { «batchNumber»: «DEFAULT_BATCH», «__typename»: «SKUBatch» }, «usageDate»: { «manufacture»: «0000-00-00», «expiry»: » 0000-00-00″, «__typename»: «SKUUsage» }, «updatedAt»: «2018-01-31», «active»: true, «__typename»: «SKUBatchRate» }, «Promotion»: { «id»: null, «title»: null, «type»: null, «scope»: null, «criterions»: null, «__typename»: «Promotion» }, «promotionId»: null, «distributorId»: 16, «_ _typename»: «Line», «InStock»: «INSTOCK», «freeSku»: false, «focusedSku»: false } ], «__typename»: «PromotionOrder» }]}}
Используя $..Lines..id Я получаю это [5105808, 769, null, 5105809, 95, null, 5105810, 82, null]
Но я хочу получить значение только [5105808, 5105809, 5105810]. Каким должен быть способ достижения этого?
Ответ №1:
Это возможное решение:
$..[?(@.skuId)].id
При этом будут получены элементы, имеющие атрибут skuId, и извлечен атрибут id.
Комментарии:
1. Я хочу узнать больше, чтобы получать данные из json. Где я могу узнать или найти больше выражений пути json? Спасибо
Ответ №2:
Вы используете ..
который является оператором глубокого сканирования, что означает, что вы ищете все id
значения атрибутов независимо от того, где они расположены в JSON.
Если вы хотите получить только id
атрибуты, которые являются прямыми дочерними элементами Lines
объекта — вам необходимо изменить свой запрос, чтобы он выглядел как: $..Lines[*].id
ДЕМОНСТРАЦИЯ:
Дополнительная информация: Плагин JSON Path Extractor от JMeter — Расширенные сценарии использования