在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的主要内容,如果未能解决你的问题,请参考以下文章

Ruby Slim - 在 DOM 属性中嵌入 JSON

在页面上输出外部 JSON Api Ruby on Rails

Ruby 对象到 json (没有 rails)

ajax进error的原因

如何将 json 数据从 ruby​​ 控制器传递到 javascript (Rails 6.1)?

如何在 JSP/Java 中创建多维 HashMap 或 Hashtable 并将其转换为 JSON 对象?