如何将以字符串形式表示的数组转换为实际数组

时间:2018-07-27 05:26:08

标签: ruby

我有一个字符串形式的数组

"[{"img_type":"HA","img_size":0,"img_name":"8a040ff1-e780-4843-9f01-6dc37e11f3c8"},{"img_type":"HB","img_size":0,"img_name":"8a040ff1-e780-4843-9f01-6dc37e11f3c8"}]"

我需要将其转换为

[
  {"img_type": "HA", "img_size": 0, "img_name": "8a040ff1-e780-4843-9f01-6dc37e11f3c8"}, 
  {"img_type": "HB", "img_size": 0, "img_name": "8a040ff1-e780-4843-9f01-6dc37e11f3c8"}
]

我尝试删除双引号,但是没有用。如何将其转换为数组?

2 个答案:

答案 0 :(得分:5)

str = '[{"img_type":"HA","img_size":0,"img_name":"8a040ff1-e780-4843-9f01-6dc37e11f3c8"},{"img_type":"HB","img_size":0,"img_name":"8a040ff1-e780-4843-9f01-6dc37e11f3c8"}]'

require 'json'
JSON.parse(str, symbolize_names: true)
  #=> [{:img_type=>"HA", :img_size=>0, :img_name=>"8a040ff1-e780-4843-9f01-6dc37e11f3c8"},
  #    {:img_type=>"HB", :img_size=>0, :img_name=>"8a040ff1-e780-4843-9f01-6dc37e11f3c8"}]

请注意,JSON::parse提供了几个可选参数,其中一个(symbolize_names)“返回JSON对象中名称(键)的符号。否则返回字符串。”

答案 1 :(得分:-1)

尝试一下

handle()

这可能会解决您的目的,但是使用eval会令人讨厌,因为它会带来不确定的方法和SQL注入的严重危险。

为此优选JSON.parse(your_string)

相关问题