Получение наименьшего числа / целого числа из ответа json в параметрах - PullRequest
0 голосов
/ 26 июня 2019

Не совсем уверен, как задать вопрос в качестве заголовка ...

но это ситуация и проблема:

Я беру Заказы из API. Принимая заказ, я хочу добавить стоимость доставки в зависимости от веса товара. Я использую API от марок для получения ставок и хочу взимать самую низкую цену, доступную из ответа API марок.

Вот моя попытка получить скорость (которая работает для отображения на внешнем интерфейсе, но, кажется, не работает в следующем) ....

...
rates = Shipstation::Shipment.get_rates({...})

cheapest_rate = rates.min_by { |rate| rate['shipmentCost'] }
cheapest_rate_number = cheapest_rate["shipmentCost"]

ошибка:

TypeError (no implicit conversion of String into Integer) on line 75

строка 75: cheapest_rate = rates.min_by { |rate| rate['shipmentCost'] }

Цель состоит в том, чтобы взять наименьшее доступное число, используйте его для @order.shipping_rate, чтобы затем использовать для расчета общей суммы платежа для обработки.

Ответ @rates JSON выглядит следующим образом:

 [{"serviceName"=>"USPS First Class Mail - Package", "serviceCode"=>"usps_first_class_mail", "shipmentCost"=>2.66, "otherCost"=>0.0}, {"serviceName"=>"USPS Priority Mail - Package", "serviceCode"=>"usps_priority_mail", "shipmentCost"=>6.95, "otherCost"=>0.0}]

, но с несколькими вариантами.

Как мне взять мой текущий код или новый код, чтобы получить наименьшее целое число из \"shipmentCost\", определить его, а затем передать его в модель без ошибки сверху

1 Ответ

0 голосов
/ 26 июня 2019

[{"serviceName" => «Почта первого класса USPS - пакет», «serviceCode» => «usps_first_class_mail», «shipmentCost» => 2.66, «otherCost» => 0.0}, {«serviceName»=> "USPS Priority Mail - Package", "serviceCode" => "usps_priority_mail", "shipmentCost" => 6,95, "otherCost" => 0,0}]

Из этого массива хэшей выможет просто сделать:

rates = Shipstation::Shipment.get_rates({...})

cheapest_rate_number = rates.collect { |h| h["shipmentCost"].to_f }.min

Отправленная вами ошибка говорит о том, что не все значения "shipmentCost" являются целыми или с плавающей точкой, поэтому мы просто конвертируем их в float, чтобы они были безопасными, даже если некоторые из них являются целыми числами / float, а некоторыеСтроки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...