【问题标题】:How to iterate array in JSON Rails如何在 JSON Rails 中迭代数组
【发布时间】:2021-01-30 12:15:22
【问题描述】:

我正在学习如何使用 rails 解析和使用 JSON 值,但我不太明白它是如何完成的。

我从 Shopify API 正确获取了一些订单:

@ordersfetch = RestClient.get("https://#{ENV['SHOPIFY_API_KEY']}:#{ENV['SHOPIFY_API_PASSWORD']}@website.myshopify.com/admin/api/2020-10/orders.json")

在我的控制器中我将其转换为 Ruby 哈希:

@orders = JSON.parse(@ordersfetch)

在我看来,我无法打印单个订单,我无法再次打印单个订单,我缺少什么?

<% @orders['orders'].each do |order| %>
  <%= order %>
<% end %>

JSON 响应给了我一个对象内的数组:

{"orders"=>[{"id"=>3186507481285, "email"=>""...

【问题讨论】:

  • 看起来您可能正在解析整个响应,而不仅仅是正文。如果没有看到 JSON 响应,或者至少是一个示例,就很难判断。 @orders = JSON.parse(@ordersfetch.body) 带给你什么?
  • 你好 Sam,我更新了代码。我正在尝试: 但我仍然无法遍历单个订单。

标签: ruby-on-rails json


【解决方案1】:

要访问 Ruby 哈希键/值,请使用 order[:id]order['id'] 语法

【讨论】:

  • 你好@arieljuod,我用json响应更新了问题
  • 我建议你使用 byebug 并在@orders = ... 后面加上一个byebug 语句,然后你可以在控制台中使用真实对象并获得正确的语法。从您问题中的代码来看,一切都应该正常。
  • 我同意@arieljuod 的观点,您应该检查回复。我怀疑你想要的是@orders = JSON.parse(@ordersfetch.body),因为@ordersfetch 除了正文(状态、标题等)之外还有其他东西。你应该能够像你想要的那样迭代@ordersfetch.body["orders"]。
猜你喜欢
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
相关资源
最近更新 更多