Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串转换为哈希值,并在ruby中以json格式输出_Ruby_Ruby On Rails 3 - Fatal编程技术网

将字符串转换为哈希值,并在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-您的意思是值中没有
”=>“
”。。。我可以接受……嗯,看起来我有点误读了这个问题,不太可能有=>,尽管有可能。类似于/“(.*”:“(.*)”/的正则表达式将是我的第一次尝试