将字符串转换为哈希值,并在ruby中以json格式输出
我有一个字符串对象,它是从控制器返回的,如下所示将字符串转换为哈希值,并在ruby中以json格式输出,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我有一个字符串对象,它是从控制器返回的,如下所示 details = "{"name"=>"David", "age"=>"12", "emp_id"=>"E009", "exp"=>"10", "company"=>"Starlink"}" 因此details.class将是String。 我需要将其转换为哈希并以Json格式输出 格式。我知道用eval方法是可以做到的。但我认为它会有安全问题。所以请建议最好的方法 { "name":"David", "
details = "{"name"=>"David", "age"=>"12", "emp_id"=>"E009", "exp"=>"10",
"company"=>"Starlink"}"
因此details.class将是String。
我需要将其转换为哈希并以Json格式输出
格式。我知道用eval方法是可以做到的。但我认为它会有安全问题。所以请建议最好的方法
{
"name":"David",
"age":"12",
"emp_id":"E009",
"exp":"10",
"company":"Starlink"
}
我如何实现它。请帮助看起来您应该去找您的API供应商,告诉他他有一个bug,因为
哈希。inspect
不是有效的序列化,因为它不是标准的,并且可能不总是可逆的
如果您得到的是上面的表单,那么您可以在对其运行gsub
后将其视为JSON:
formatted_details = JSON.pretty_generate(JSON.parse(details.gsub('=>', ':')))
puts formatted_details
# => {
"name": "David",
"age": "12",
"emp_id": "E009",
"exp": "10",
"company": "Starlink"
}
你是对的,评估太危险了。现在是解析时间。Regex获取双引号内的所有匹配项,然后将它们视为对。它是否返回
details=“{”name”=>“David”,“age”=>“12”,“emp_id”=>“E009”,“exp”=>“10”,“company”=>“Starlink”}“
或details='{”name=>“David”,“age”=>“12”,“emp_id”=>“E009”,“exp”=>“10”,“company”=>“Starlink”}”“
因为第一个会导致语法错误,意外的提示符,预期输入结束。@TonyHopkinson-您的意思是值中没有”=>“
”。。。我可以接受……嗯,看起来我有点误读了这个问题,不太可能有=>,尽管有可能。类似于/“(.*”:“(.*)”/的正则表达式将是我的第一次尝试