删除尾随逗号的方法

时间:2017-05-11 19:48:46

标签: arrays ruby

我正在尝试以<xsl:for-each select="entry"> <fo:table-row> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="TimeStamp" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="PlateVolts" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="PlateCurrent" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="ForwardPower" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="ReflectivePower" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="IntakeAirTemp" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="ExhaustAirTemp" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="WestRoomTemp" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="TowerLightCurrent" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="EastRoomTemp" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="NotMonitrd1" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="RackVoltage" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="BkupFwd" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="BkupRef" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="SpsGen" /> </fo:block> </fo:table-cell> <fo:table-cell border="solid .5px black" text-align="center" > <fo:block> <xsl:value-of select="AudioLevel" /> </fo:block> </fo:table-cell> </fo:table-row> </xsl:for-each> </fo:table-body> </fo:table> 格式向.txt格式发送JSON中的一对密码以及它们出现在其中的频率。然后我会用它来制作图表。图表要求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 部分是上述ruby代码写入文件的位置。我的代码产生:

var dataPoints

我在[["patches90",35], ["Champions17",32], ["scotty1977",29], ["Kiddos08",25], ["holidays2016",21], ["scott26me",17], ["People1123@",13], ["Software0)",9], ["Artistic104",5], ["bank123",2], 中有一个额外的逗号,并且在结尾处有一个缺少的右括号["bank123",2],。我尝试了多个循环和条件而没有运气。

1 个答案:

答案 0 :(得分:0)

您想要序列化数组数组。您将获得一个JSON示例,因此问题是,您需要生成哪种结构才能传递给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}

简而言之,请使用现有的经过良好测试的车轮。

相关问题