Arrays 删除尾随逗号的方法

Arrays 删除尾随逗号的方法,arrays,ruby,Arrays,Ruby,我正试图向JSON格式的.txt文件发送hashlist中密码对的数组,以及它们在其中出现的频率。然后我将使用它生成图表。图表要求JSON数据采用以下格式: [["patches90",35], ["Champions17",32], ["scotty1977",29], ["Kiddos08",25], ["holidays2016",21], ["scott26me",17], ["People1123@",13], ["Software0)",9], ["Artistic104",5],

我正试图向
JSON
格式的
.txt
文件发送
hashlist
中密码对的数组,以及它们在其中出现的频率。然后我将使用它生成图表。图表要求
JSON
数据采用以下格式:

[["patches90",35],
["Champions17",32],
["scotty1977",29],
["Kiddos08",25],
["holidays2016",21],
["scott26me",17],
["People1123@",13],
["Software0)",9],
["Artistic104",5],
["bank123",2]]
我正在使用以下代码:

    f = open('/var/www/html/hashtopussy/top10.txt', 'w')
    f.print "["

    @words.sort{|a,b| (a[1]<=>b[1]) * -1}[0, @cap_at].each { |elem|
        percentage = (elem[1].to_f / @total_words_processed) * 100
        ret_str << "#{elem[0]} = #{elem[1].to_s} (#{percentage.round(2).to_s}%)\n"

        #my code goes here

        f.print  "[#{elem[0].to_json},#{elem[1].to_json}]"
        if (elem != elem.last) 
            f.print ",\n"
        else f.print "]"
        end

        #and ends here
    }

    #f.print "]\n"
    f.close

我在
[“bank123”,2],
中有一个额外的逗号,结尾缺少一个结束括号
]
。我尝试了多个循环和条件,但没有成功。

您想序列化数组数组。我们给您提供了一个JSON示例,所以问题是,您需要生成什么结构才能传递给序列化程序以获得所需的结果:

require 'json'

foo = JSON[
'[["patches90",35],
["Champions17",32],
["scotty1977",29],
["Kiddos08",25],
["holidays2016",21],
["scott26me",17],
["People1123@",13],
["Software0)",9],
["Artistic104",5],
["bank123",2]]'
]
此时,
foo
是等效对象:

foo
# => [["patches90", 35],
#     ["Champions17", 32],
#     ["scotty1977", 29],
#     ["Kiddos08", 25],
#     ["holidays2016", 21],
#     ["scott26me", 17],
#     ["People1123@", 13],
#     ["Software0)", 9],
#     ["Artistic104", 5],
#     ["bank123", 2]]
(在本例中,解析的对象看起来像原始JSON字符串,但并不总是如此。)

您可以通过从Ruby对象开始并尝试序列化它来测试这一点:

require 'json'

foo = [
  ['a', 1],
  ['b', 2]
]

puts JSON[foo]

# >> [["a",1],["b",2]]
因此,构建一个包含两个元素数组的数组,并将其传递给JSON并保存输出。我通常会使用以下内容:

File.write('foo.json', JSON[foo])
这种策略可以很容易地将任何JSON API响应分解为Ruby对象,并可能对其进行修改和重新序列化:

foo = JSON['{"a":1,"b":2}'] # => {"a"=>1, "b"=>2}
foo['c'] = 4
puts JSON[foo]       
# >> {"a":1,"b":2,"c":4}

简而言之,使用现有的经过良好测试的控制盘。

我很确定,如果您准备好数组,请调用
。\u json
并进行渲染,chart js会很好地接受它。@SergioTulentsev您能告诉我那会是什么样子吗?我可以,如果您发布@SergioTulentsev我编辑了原始问题,这就是你要找的吗?抱歉,再一次,我对这一切都是新手。顺便说一句,把大问题分解成更小的、孤立的子问题的能力是程序员的一项基本技能。没有它,除了最简单的东西(不足以保证分解)之外,你无法构建任何东西。
foo = JSON['{"a":1,"b":2}'] # => {"a"=>1, "b"=>2}
foo['c'] = 4
puts JSON[foo]       
# >> {"a":1,"b":2,"c":4}