rails从json响应中渲染提取值

时间:2014-07-10 17:38:14

标签: ruby-on-rails json typhoeus

我有一个Rails应用程序,我正在尝试从解析的JSON哈希中呈现一个项目数组。

我当前的渲染语句如下所示

resp = JSON.parse(response.body)
render json: resp

我使用的是Typheous,这段代码对我不起作用:

resp = JSON.parse(response.body).fetch("item")

以下是JSON哈希(item键有很多值,但我只是为了简洁而显示一个):

{
  ebay: [{
    findItemsByKeywordsResponse: [{
      ack: [],
      version: [],
      timestamp: [],
      searchResult: [{
        count: "91",
        item: [{
          itemId: [ "321453454731" ]
        }]
      }]
    }]
  }]
}

如何从解析的JSON哈希中呈现项目数组?

1 个答案:

答案 0 :(得分:1)

由于ebayfindItemsByKeywordsResponse键只有一个值(根据OP的评论),您可以通过执行此类操作来检索items数组:

resp = JSON.parse(response.body)
resp[:ebay].first[:findItemsByKeywordsResponse].first[:searchResult].first[:item]

这将为您提供包含itemId和任何其他键值对的哈希数组。

您希望包含.first(或[0])的原因是因为根据解析的JSON响应,您的哈希包含一直嵌套到item的哈希数组阵列。如果有多个searchResult值,则您需要在获取item数组之前对其进行迭代。