ruby 如何在Rails中将对象字符串转换为对象

elcex8rz  于 2022-12-22  发布在  Ruby
关注(0)|答案(2)|浏览(158)

我怎样才能把这个object字符串转换成仅仅是object。
//字符串内的对象

"{\"text\"=>\"ID\", \"value\"=>\"id\"}"

//对象

{"text"=>"ID", "value"=>"id"}
5sxhfpxr

5sxhfpxr1#

你可以用这个

require 'json'

def string_parse_to_hash(string)
  modified_string = string
    .gsub(/:(\w+)/){"\"#{$1}\""}
    .gsub('=>', ':')
    .gsub("nil", "null")
  JSON.parse(modified_string)
rescue
  {}
end

str = "{\"text\"=>\"ID\", \"value\"=>\"id\"}"
puts string_parse_to_hash(str)

但是要注意,如果您不信任字符串的来源,您必须清理并验证其内容。

b09cbbtk

b09cbbtk2#

如果你喜欢危险的生活,这也是一个选择:

str = "{\"text\"=>\"ID\", \"value\"=>\"id\"}"
parsed_hash = eval(str)
# {"text"=>"ID", "value"=>"id"}

但这是非常危险的,取决于你从哪里得到你的输入。
eval将字符串计算为ruby代码,因此可以注入任何有害的代码

相关问题