这个问题在这里已经有答案了:

这样的事情存在吗 YAML (又名 YAML)?

如果这个曾经存在过,那么它一定已经被抹去了,因为最新的搜索结果一无所获。看起来有很多实现 倾倒 仅从 Javascript 到 YAML 输出,但很难找到支持转储和加载的实现。

有没有人在做这样的事情...或者是需求太低了。

有帮助吗?

解决方案

可能是较新版本的 js-yaml 这里:

http://github.com/visionmedia/js-yaml

其他提示

只是在寻找相同的东西,这是一个基本的 基于 Javascript 的 YAML 解析器 写于 Tj·霍洛韦丘克重构mycode.com. 。我在此处复制它以确保它不会丢失,似乎 yaml.org 上的 JsYaml 链接已损坏一段时间。还没有测试过。

;(function(){
  YAML = {
    valueOf: function(token) {
      return eval('(' + token + ')')
    },

    tokenize: function(str) {
      return str.match(/(---|true|false|null|#(.*)|\[(.*?)\]|\{(.*?)\}|[\w\-]+:|-(.+)|\d+\.\d+|\d+|\n+)/g)
    },

    strip: function(str) {
      return str.replace(/^\s*|\s*$/, '')
    },

    parse: function(tokens) {
      var token, list = /^-(.*)/, key = /^([\w\-]+):/, stack = {}
      while (token = tokens.shift())
        if (token[0] == '#' || token == '---' || token == "\n") 
          continue
        else if (key.exec(token) && tokens[0] == "\n")
          stack[RegExp.$1] = this.parse(tokens)
        else if (key.exec(token))
          stack[RegExp.$1] = this.valueOf(tokens.shift())
        else if (list.exec(token))
          (stack.constructor == Array ?
            stack : (stack = [])).push(this.strip(RegExp.$1))
      return stack
    },

    eval: function(str) {
      return this.parse(this.tokenize(str))
    }
  }
})()

print(YAML.eval(readFile('config.yml')).toSource())




// config.yml

---
  # just a comment
  list: ['foo', 'bar']
  hash: { foo: "bar", n: 1 }
  lib:
    - lib/cart.js
    - lib/cart.foo.js
  specs:
    - spec/cart.spec.js
    - spec/cart.foo.spec.js
    # - Commented out
  environments:
    all:
      options:
        failuresOnly: true
        verbose: false

我更新这个问题以提供我自己研究的另一个解决方案: https://github.com/jeremyfa/yaml.js

它是一个纯 javascript 端口 Symfony YAML 组件 (YAML 1.2) 并支持加载和转储。希望这可以帮助。

我不确定在哪里可以找到支持转储但不加载的“大量实现” - 就 JSON 是 YAML 1.2 的适当子集而言,我猜可能会有很多,但该子集使得YAML 不太人性化,尤其是对于复杂的数据结构。我发现的大多数链接都是 JS-YAML 的 github 分支,这些分支依赖于 node.js 和/或仅提供解析器。

杰里米·费弗尔 yaml.js on bitbucket 在独立的 javascript 中实现了 YAML 的转储和加载(我从 回答相关的 stackoverflow 问题)。它没有得到积极维护,但似乎对于中等复杂的 YAML 和/或 javascript 对象工作得很好。

yaml-javascript 假装既是转储器又是解析器。从未尝试过。

还有这个 javascript-yaml-解析器/

看这个问题: JavaScript YAML 解析器, ,迪奥戈·科斯塔 说:
可用的 javascript YAML 解析器都无法满足我的需求,因此我开发了自己的解析器:它可以在这里找到: http://code.google.com/p/javascript-yaml-parser/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top