【问题标题】:Print json to file from ruby program从 ruby​​ 程序打印 json 到文件
【发布时间】:2016-02-03 19:38:41
【问题描述】:

我有一个命令行应用程序。称呼它的方式是:

ruby comb.rb --format json 'journals.csv' 'articles.csv' 'authors.json' > full_articles.json

基本上,它的作用是组合来自不同文件(作为参数传递的文件)的信息。格式定义输出的格式。

一个数组的array arribes 到 json presenter 类(snipped 中的集合)。

我想向一个新文件(我作为最后一个参数传递的那个)插入一个 json 对象(一个对象数组)。

这是演示者类的一部分:

def call
      collection.each do |line|
        puts as_json line
      end
    end

    private

    def as_json line
      {
        "issn"    => line[0],
        "title"   => line[1],
        "doi"     => line[2],
        "author"  => line[3],
        "journal" => line[4]
      }
    end

full_articles.jsonfile 的输入是一组对象,但未封装在数组中。你知道如何解决这个问题吗?

【问题讨论】:

  • 您能否阐明“一组对象但未封装在数组中”的含义。 ?
  • @rohit89 文件看起来像:{...} \n {...} \n {...}
  • 你希望它是 [{...}, {...}, {...}] 吗?
  • @rohit89 是的,这边走。

标签: ruby json file io


【解决方案1】:

如果你想要它作为一个数组,你可以使用map

puts collection.map {|line| as_json line}.inspect

puts collection.map {|line| as_json line}.to_json

【讨论】:

  • 和以前一样的输出。 @rohit89
  • 等等,这应该是 json 格式吗?
  • 它必须是 Json 格式,但不是字符串化的。 @rohit89
【解决方案2】:

解决办法是:

puts collection.map {|line| as_json line}.inspect

@rohit89 的方式是正确的,但未显示数组。 Whit 检查它已显示。

【讨论】:

    猜你喜欢
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多