js-yaml -> 解析 ruby​​ 类型

Posted

技术标签:

【中文标题】js-yaml -> 解析 ruby​​ 类型【英文标题】:js-yaml -> Parse ruby types 【发布时间】:2018-12-20 08:57:49 【问题描述】:

我正在用 javascript 制作一个 Ruby 控制台,因此需要准确地将 Ruby 对象信息发送到渲染器进程。我决定使用 YAML,因为在 Ruby 端使用 YAML 非常容易,并且包含所需的所有信息。但我不断收到错误。

取下面的红宝石:

[Test,Test.new].to_yaml

这将转换为以下 YAML:

---
- !ruby/class 'Test'
- !ruby/object:Test 

当我尝试使用 JS-YAML 解析时,我们收到以下错误:

unknown tag !<!ruby/class> at line 2, column 21:
    - !ruby/class 'Test'
                        ^

所以我预计这会发生,因为 JavaScript 中的 YAML 没有 Ruby 类型!我已经看到一种解决方案是创建新的 YAML 类型来处理这些数据:

var RubyClassType = new jsyaml.Type('!ruby/class', 
  kind: 'class'
);

但是,在理想的世界中,我不必定义每个单独的类型。在理想的世界中,所有未知类型都将被视为相同(例如,作为 yaml 序列),否则 ruby​​ 不会首先生成奇怪的 ruby​​ 类型。我可以不用在 JavaScript 中定义每个 Ruby 类型就解决这个问题吗?

【问题讨论】:

@engineermnky 我最初开始使用 JSON,但它存在一些大问题。例如。无法区分符号和文本,无法将对象作为对象的键,......这些都是可以克服的,它涉及构建一个新的 JSON 解析系统或一个新的 JSON 转储系统,这非常麻烦。 【参考方案1】:

看起来这可以在 JS-YAML 中处理如下:handle_unknown_types.js

不会接受这个作为答案,但 ruby​​-first 解决方案会更好。

【讨论】:

以上是关于js-yaml -> 解析 ruby​​ 类型的主要内容,如果未能解决你的问题,请参考以下文章

iOS之深入解析CocoaPods的插件机制和如何加载插件整合开发工具

ruby Ruby解析JSON

ruby Ruby中的简单命令行解析器

ruby 解析器 - 示例解析器

Ruby - 遍历解析的 JSON

在 Ruby 中解析 JSON 字符串