需要将字符串解析为json格式

时间:2011-12-09 19:04:04

标签: ruby-on-rails json httparty

我有以下字符串要解析为JSON并作为post请求发送。不确定最好的方法是什么:

开始= 0&安培; page_length = 50&安培; exclude_vehicle_category =%5B%5D&安培; toll_non_toll =假安培;模式=%22detail_state_mileage_report%22安培; scope_kind =%22enterprise_group%22安培; scope_value = 4317&安培; scope_values =%7B%22enterprise_group%22%3A %204317%7D&安培;起始日期=%7B%22snap_unit%22%3A%20%22天%22%2C%20%22snap_direction%22%3A%20%22beginning%22%7D&安培; END_DATE =%7B%7D&安培; TIME_ZONE =% 22EST%22安培;柱=%5B%22GROUPNAME%22%2C%20%22VEHICLEID%22%2C%20%22VEHICLENAME%22%2C%20%22VEHICLETAG%22%2C%20%22VEHICLE_VIN%22%2C%20%22TOTAL_DISTANCE_DRIVEN %22%2C%20%22TOTAL_DISTANCE_DRIVEN_OH%22%5D&安培;着色=%5B%5D&安培;排序=%5B%5B%22GROUPNAME%22%2C%20false%5D%2C%20%5B%22VEHICLEID%22%2C%20false %5D%5D

2 个答案:

答案 0 :(得分:2)

s包含您的字符串:

hash = {}   
s.split("&").each do |key_value|
  key, value = key_value.split("=")
  hash[key.to_sym] = value
end
hash.to_json

答案 1 :(得分:0)

Rack::Utils.parse_query(s)
=> {"start"=>"0",
    "page_length"=>"50",
    "exclude_vehicle_category"=>"[]",
    "toll_non_toll"=>"false",
    "mode"=>"\"detail_state_mileage_report\"",
    "scope_kind"=>"\"enterprise_group\"",
    "scope_value"=>"4317",
    "scope_values"=>"{\"enterprise_group\": 4317}",
    "start_date"=>"{\"snap_unit\": \"day\", \"snap_direction\": \"beginning\"}",
    "end_date"=>"{}",
    "time_zone"=>"\"EST\"",
    "columns"=>"[\"GROUPNAME\", \"VEHICLEID\", \"VEHICLENAME\", \"VEHICLETAG\", \"VEHICLE_VIN\", \"TOTAL_DISTANCE_DRIVEN\", \"TOTAL_DISTANCE_DRIVEN_OH\"]",
    "coloring"=>"[]",
    "sort"=>"[[\"GROUPNAME\", false],[\"VEHICLEID\", false]]"
   }