Ruby哈希,编码



我有以下代码:

{
  "coloring" :[],
  "columns" : ["GROUPNAME", "WAGNAME", "PREDICATEACTIONNAME", "LOCATIONTIME", "ADDRESS"],
  "end_date" : {},
  "event_type" : null
  "exclusive_group_name" :  null
  "mode" :  "alerts_detail_report"
  "page_length" : 50
  "scope_kind" :  "enterprise_group"
  "scope_value" : 14553
  "scope_values" :  {"enterprise_group": 14553}
  "sort" :[["WAGNAME", false], ["LOCATIONTIME", false]]
  "start" : 0
  "start_date" :  {"snap_unit": "day",
    "snap_direction": "beginning"}
  "time_zone" : "EST"
}

我怎么做这样的东西:

start=0&page_length=50&exclusive_group_name=null&event_type=null&mode=%22alerts_detail_report%22&scope_kind=%22enterprise_group%22&scope_value=14553&scope_values=%7B%22enterprise_group%22%3A%2014553%7D&start_date=%7B%22snap_unit%22%3A%20%22day%22%2C%20%22snap_direction%22%3A%20%22beginning%22%7D&end_date=%7B%7D&time_zone=%22EST%22&columns=%5B%22GROUPNAME%22%2C%20%22WAGNAME%22%2C%20%22PREDICATEACTIONNAME%22%2C%20%22LOCATIONTIME%22%2C%20%22ADDRESS%22%5D&coloring=%5B%5D&sort=%5B%5B%22WAGNAME%22%2C%20false%5D%2C%20%5B%22LOCATIONTIME%22%2C%20false%5D%5D

1)哈希的右侧被编码为

散列被破坏。下面是一个有效的方法:

hsh = {
  "coloring" => [],
  "columns" => ["GROUPNAME", "WAGNAME", "PREDICATEACTIONNAME", "LOCATIONTIME", "ADDRESS"],
  "end_date" => {},
  "event_type" => nil,
  "exclusive_group_name" => nil,
  "mode" =>  "alerts_detail_report",
  "page_length" => 50,
  "scope_kind" =>  "enterprise_group",
  "scope_value" => 14553,
  "scope_values" =>  {"enterprise_group"=> 14553},
  "sort" =>[["WAGNAME", false], ["LOCATIONTIME", false]],
  "start" => 0,
  "start_date" =>  {"snap_unit"=> "day", "snap_direction"=> "beginning"},
  "time_zone" => "EST"
}
现在构建查询字符串:
require 'uri'
hsh.map { |k, v| "#{k}=#{URI::encode v.inspect}" }.join('&')

这将为您提供一个可行的查询字符串。但是看起来与您在问题中提供的编码不同。

最新更新