【问题标题】:Parsing Ruby hash literal using Javascript使用 Javascript 解析 Ruby 哈希文字
【发布时间】:2016-05-08 15:40:57
【问题描述】:

我需要获取 Web 表单中的原始客户端文本并将其作为 JSON 发送回 Tomcat servlet。由于遗留原因,此输入可能被格式化为 Ruby 哈希。我也不能强迫我的客户将他们现有的 Ruby 格式输入转换为 JSON。我可以编写一个自定义解析器,但我想看看是否存在基于 JavaScript 的解决方案,它可以让我确定一个文本块是否是 Ruby 哈希,如果是,则将其转换为 JSON。

【问题讨论】:

  • 不能使用object.to_json
  • 我相信这是 Rails 的事情,不是吗?
  • “Ruby 哈希”是什么意思?你的意思是哈希文字吗? JSON是一种数据序列化格式; Ruby 哈希字面量是一种编程结构,没有任何与 JSON 相同的约束。{ class Foo; end => 2**Float::INFINITY } 是 Ruby 中完全有效的哈希字面量。
  • 我所指的输入将是序列化的对象,根据我对 Ruby 的了解,Ruby 哈希格式。
  • Ruby 哈希可以包含任何 Ruby 对象 - 当您使用 to_s 方法将哈希序列化为字符串时,您可以获得类似 {:a=>5, "asdasd"=>nil, :b=>2016-02-01 10:18:43 +0100} 的内容。即使使用 Ruby,您也绝对无法解析它,正如 Jordan 已经说过的,这不是 JSON 那样的序列化格式。但是,您可能会编写一些内容来覆盖它的 子集,例如,将键和值限制为字符串和/或数字。您需要先澄清这一点,然后才能继续。

标签: javascript ruby hash


【解决方案1】:

JSON 是一个 Ruby 标准库。你只需要它:

require 'json'

data = {:hello => "goodbye"}
p data.to_json #=> "{\"hello\":\"goodbye\"}"

参考:Generating JSON

【讨论】:

  • 您的解决方案使用了我无法访问的 Ruby。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 2011-11-24
  • 2023-03-18
  • 2011-07-22
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多