我有以下请求参数:
"mappings"=>"[{ \"spec_id\" => \"1\",
\"item_name\" => \"sku\"}|{ \"spec_id\" => \"2\",
\"item_name\" => \" productname\"}|{ \"spec_id\" => \"4\",
\"item_name\" => \" price\"}]"
我想知道如何解析哈希中的项目。
我做的第一件事是
mappings = params[:mapping][:mappings].split("|")
mappings.each do |map|
# don't know how to create the hashes
end
我宁愿拆分“,”而不是“|”如果可能的话,我不能100%确定请求参数的格式是否正确。如果不是,请告诉我,我会改变它。
答案 0 :(得分:0)
要解析此字符串,我会执行以下操作:
str = "[{ \"spec_id\" => \"1\",
\"item_name\" => \"sku\"}|{ \"spec_id\" => \"2\",
\"item_name\" => \" productname\"}|{ \"spec_id\" => \"4\",
\"item_name\" => \" price\"}]"
mappings = JSON.parse(str.gsub(/}\s*\|\s*{/, '},{').gsub(/\s*\=\>/, ':'))
这将基本上通过删除“|”将您拥有的内容转换为JSON字符串字符和转换'=>'进入':'。当你最终解析结果时,你将解析JSON,所以你会得到一个很好的Ruby Hash:
[{"spec_id"=>"1", "item_name"=>"sku"}, {"spec_id"=>"2", "item_name"=>" productname"}, {"spec_id"=>"4", "item_name"=>" price"}]