在Ruby中使用Hashtable到JSON
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Ruby中使用Hashtable到JSON相关的知识,希望对你有一定的参考价值。
我在我的ruby脚本中有这个哈希表
Table2 = {
'Parameters' => {
"#{splist[i]}" => {
'Description' => "#{splist[i+1]}",
'Type' => 'String',
'Default' => "#{splist[i+2]}"
},
"#{splist[i+3]}" => {
'Description' => "#{splist[i+4]}",
'Type' => 'String',
'Default' => "#{splist[i+5]}"
},
"#{splist[i+6]}" => {
'Description' => "#{splist[i+7]}",
'Type' => 'String',
'Default' => "#{splist[i+8]}"
},
"#{splist[i+9]}" => {
'Description' => "#{splist[i+10]}",
'Type' => 'String',
'Default' => "#{splist[i+11]}"
}
}
}
我正在脚本中进一步转换为JSON,它几乎按预期工作。但出于某种原因,出于某种原因,它会在“默认”行中添加“ n”。像这样
"Default": "10.0.0.0/16
"
我怎样才能避免这种情况发生?
谢谢!
答案
chomp
方法用于从字符串中删除行结尾(以及其他内容)。默认情况下,如果不带参数调用,它将为您干净地删除“ n”字符。行结尾可能是由编辑器或任何创建字符串的机制添加的。
为了确保没有行结束,无论是在添加还是读取值时,都要将chomp
方法附加到末尾。
params = Table2['Parameters'].chomp
引用Ruby文档:
返回一个新的String,其中给定的记录分隔符从str的末尾(如果存在)中删除。如果$ /尚未从默认的Ruby记录分隔符更改,则chomp也会删除回车符(即将删除 n, r和 r n)。如果$ /是一个空字符串,它将从字符串中删除所有尾随换行符。
另一答案
我设法根据你们的建议使用chomp来纠正这个问题,但是我设法通过@Amadan的想法/推荐在此过程中添加,以确保可能在以后添加的任何内容都可以避免相同的错误,并且“splist”的来源是从文件读取(带有一堆参数的配置文件),就像这样
plist = []
File.readlines(conf).each do |line|
line.chomp!
plist << line
end
之后转换为splist。
谢谢一堆
以上是关于在Ruby中使用Hashtable到JSON的主要内容,如果未能解决你的问题,请参考以下文章
在页面上输出外部 JSON Api Ruby on Rails