【问题标题】:How to handle a JSON with same value names in ruby on rails如何在 ruby​​ on rails 中处理具有相同值名称的 JSON
【发布时间】:2016-04-17 14:57:08
【问题描述】:

我有这个来自 spotify API 的 JSON:

link

我需要找到一种方法来获取轨道 ID,最好是所有 ID,但我找不到将 ID 分配给变量的方法。我只能拿到第一个。过去 2 天我一直在解决这个问题,而且在不寻求帮助的情况下找到解决方案太令人沮丧了。

【问题讨论】:

  • 欢迎来到stackoverflow,如果您需要帮助,请在问题正文中添加示例数据和相关代码以及所需的结果。不要链接到外部资源,例如 Pastebin 或实际的 API 端点,因为您不应该期望有人愿意帮助您跳过一堆障碍,这会导致链接失效。
  • 相关代码?你想让我添加 GET 请求吗?因为除此之外没有比 search = json.parse search2 = search['tracks']['items'] 问题特别是我不能使用这种方法,因为当哈希具有相同的键时它会返回一个整数,或者我可以使用其他方法只获取值或第一个 id 键和值。我没有包含任何代码,因为我愿意接受任何有用的信息。我没有包含 GET 请求,因为我认为它不相关。我包含链接而不是粘贴,因为我不想删除其中的链接
  • 我也没有要求或者我想要一个可以复制粘贴的现成代码。该帖子说我需要找到一种方法,指出我正在寻找对我的问题有帮助的信息。

标签: ruby-on-rails ruby json spotify


【解决方案1】:

首先,阅读一些 Ruby 相关的书籍。

其次,这是一个示例解决方案,因为您已被困 2 天。你必须因为你的坚持而得到回报! :)

# Assume you have that result in text format in `result` variable
# It means that we need to parse it and turn it into ruby hash
result =<<RESULT
  "tracks" : {
    "href" : "https://api.spotify.com/v1/search?query=don%27t+worry+be+happy&offset=0&limit=1&type=track","
...
RESULT


# Let's parse it using JSON gem
require 'json'
json = JSON.parse(result)

### If your result is already parsed into Ruby hash, then skip the above code.

unless json.dig('tracks', 'items').empty?
  json['tracks']['items'].map {|i| i['id'] }
end

# This will return an array of all track id's
 => ["4v52HuhZqVV0eNpP6vzH5I"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多