【问题标题】:Convert a Ruby object to an IO-like object with a JSON使用 JSON 将 Ruby 对象转换为类似 IO 的对象
【发布时间】:2021-03-26 16:34:25
【问题描述】:

我在一个 Rails 应用程序上,使用 Google Drive Ruby gem 构建一个读取 Google 电子表格的服务。

根据gem documentation,看起来我可以使用 JSON 而不是直接将 JSON 文件作为参数提供类似 IO 的对象。

问题是我不太确定如何从现有的对象中构建所述对象,请考虑如下:

my_object = { "property": "value" }

我如何将这个my_object 变成一个内部带有 JSON 的类 IO 对象?我什至不确定我是否完全理解它对类似 IO 的对象所指的内容。这甚至可能吗?有什么想法吗?

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    您可以将该哈希转换为 JSON 字符串,然后将其制成 StringIO。

    io = StringIO.new(JSON.generate(my_object))
    method_that_accepts_io(io)
    

    看起来我可以使用 JSON 而不是直接将 JSON 文件作为参数提供类似 IO 的对象。

    不确定你的意思,但如果你有一个包含 JSON 的文件,并且你不能只传递文件名(所以被调用者自己打开并读取它),你可以打开文件并传递那个。

    io = File.open("my_file.json")  
    method_that_accepts_io(io)
    

    我什至不确定我是否完全理解它所指的类 IO 对象。

    这意味着一个像IO 一样走路和嘎嘎叫的对象(具有#read#lines#bytes 等方法)

    【讨论】:

      猜你喜欢
      • 2017-06-08
      • 1970-01-01
      • 2023-04-04
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多