在Ruby中使用Hashtable到JSON

问题描述 投票:0回答:2

我在我的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\n"

我怎样才能避免这种情况发生?

谢谢!

json ruby variables hash rubygems
2个回答
0
投票

chomp方法用于从字符串中删除行结尾(以及其他内容)。默认情况下,如果不带参数调用,它将为您干净地删除“\ n”字符。行结尾可能是由编辑器或任何创建字符串的机制添加的。

为了确保没有行结束,无论是在添加还是读取值时,都要将chomp方法附加到末尾。

params = Table2['Parameters'].chomp

引用Ruby文档:

返回一个新的String,其中给定的记录分隔符从str的末尾(如果存在)中删除。如果$ /尚未从默认的Ruby记录分隔符更改,则chomp也会删除回车符(即将删除\ n,\ r和\ r \ n)。如果$ /是一个空字符串,它将从字符串中删除所有尾随换行符。


0
投票

我设法根据你们的建议使用chomp来纠正这个问题,但是我设法通过@Amadan的想法/推荐在此过程中添加,以确保可能在以后添加的任何内容都可以避免相同的错误,并且“splist”的来源是从文件读取(带有一堆参数的配置文件),就像这样

plist = []
File.readlines(conf).each do |line|
    line.chomp!
    plist << line
end

之后转换为splist。

谢谢一堆

© www.soinside.com 2019 - 2024. All rights reserved.