正在 JSON 中解析 Ruby 中的多个页面

Parsing JSON with multiple pages in Ruby

我明白如何解析JSON,但如果它包含link到其他页面,我不知道如何解析。

非常感谢您的帮助!

api.example.com/v0/accounts

第一次请求 JSON 文件时,我们得到:

{
  "response": "OK",
  "nfts": [
    {
      "token_id": "35507806371588763669298464310896317145981867843055556101069010709538683224114"
    }
  ],
  "total": null,
  "continuation": "1634866413000"
}

有一行:continuation,这是对下一个请求的link,所以它会重复很多次。

在下一个请求中,link 更改为 api.example。com/v0/accounts&continuation=1634866413000

我的代码现在看起来像这样:

class Source
  include Mongoid::Document
  include Mongoid::Timestamps
  require 'json'

  after_save :add_items

  def add_items
    json= HTTParty.get("https://api.example.com/v0/accounts")
    json.dig('nfts')
    load_items_ethereum.each do |item|
      Item.create!(
        :token_id => item['token_id'],
      )
    end
  end
end

像 HTTParty 这样的低级 HTTP 客户端通常不处理迭代。你需要自己做,使用循环直到没有连续字段,例如:

begin
  continuation_param = "?continuation=#{continuation_id}" if continuation_id
  json = HTTParty.get("https://api.example.com/v0/accounts#{continuation_param}")
  continuation_id = json.dig('continuation');
  # process latest payload, append it to a running list, etc.
end while continuation_id

(对于生产,最佳做法是保留一个计数器,以便您可以在 N 次迭代后退出,以避免无限循环。)