【问题标题】:Is there a built-in Ruby way to convert a query string directly into a JSON object?是否有内置的 Ruby 方法可以将查询字符串直接转换为 JSON 对象?
【发布时间】:2014-04-18 06:58:45
【问题描述】:

如果我有一个字符串:

"TimeStamp=1320947201017&enumber=34646"

并希望这是 JSON :

{ "TimeStamp" : "1320947201017", "enumber" : "34646" }

在 Ruby 中是否有内置的方法来实现这一点?

【问题讨论】:

  • 直接将您的主题编辑为查询字符串..
  • 酷,好主意。刚刚感谢奥雅纳
  • No.. 你做错了 :-) 查询字符串到 Json... 像这样..
  • 好吧,我想我明白了.. :)

标签: ruby-on-rails ruby json


【解决方案1】:

如下操作:

require 'uri'
require 'json'

Hash[URI.decode_www_form("TimeStamp=1320947201017&enumber=34646")].to_json
# => "{\"TimeStamp\":\"1320947201017\",\"enumber\":\"34646\"}"

文档 - decode_www_formGenerating JSON

【讨论】:

  • 哇,这真的很有趣。我以前从未见过。谢谢!
  • 我认为 OP 想要它在 JSON 中,而不是 Ruby 哈希。 bjhaid 的编辑可以做到这一点,但 bjhad 不应该编辑其他人的代码。大幅度改变别人的答案是不合适的。
  • 您添加了 to_json,但忘记将输出从 Hash 更新为 JSON。
  • @KirtiThorat 谢谢你uuuuuuu... :-) 我总是忘记...一切:p
  • 是的。 #=> "{\"TimeStamp\":\"1320947201017\",\"enumber\":\"34646\"}"
【解决方案2】:

将其转换为哈希,然后将哈希转换为 json,均使用 rails 的内置方法。

require 'rack/utils'
#=> []
paramstring = "TimeStamp=1320947201017&enumber=34646"
#=> "TimeStamp=1320947201017&enumber=34646"
hash = Rack::Utils.parse_nested_query(paramstring)
#=> {"TimeStamp"=>"1320947201017", "enumber"=>"34646"}
hash.to_json    
#=> "{\"TimeStamp\":\"1320947201017\",\"enumber\":\"34646\"}"

【讨论】:

  • 哇,麦克斯·威廉姆斯,你是个传奇!谢谢!
猜你喜欢
  • 2012-12-03
  • 2021-01-28
  • 1970-01-01
  • 2013-05-31
  • 2010-09-07
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
相关资源
最近更新 更多