【问题标题】:How convert JSON to CoffeeScript and write on a file ".coffee"?如何将 JSON 转换为 CoffeeScript 并写入文件“.coffee”?
【发布时间】:2013-09-28 13:56:00
【问题描述】:

如何将 JSON 转换为 CoffeeScript 并使用 NodeJS 写入文件“.coffee”?

JSON:

{
  "name": "jack",
  "type": 1
}

到 CoffeeScript:

"name": "jack"
"type": 1

【问题讨论】:

  • 你为什么要这么做?!
  • coffeescript 的超级粉丝,我同意 Neal 的观点,没有充分的理由这样做。 “js”形式的 JSON 与 coffeescript 完全兼容。如果你想重塑对象,那就是另一个问题了。

标签: json coffeescript


【解决方案1】:

我希望你知道如何在 nodejs 中读写文件,所以我不会在这里讨论。 要将javascript转换为coffeescript,您可以使用这个npm:

https://github.com/rstacruz/js2coffee

【讨论】:

    【解决方案2】:

    通过遍历对象 (for … of) 应该很容易。只需使用递归并将缩进级别作为参数:

    esc_string = (s) ->
      return '"' + s.replace(/[\\"]/g, '\\$1') + '"'
    
    csonify = (obj, indent) ->
      indent = if indent then indent + 1 else 1
      prefix = Array(indent).join "\t"
      return prefix + esc_string obj if typeof obj is 'string'
      return prefix + obj if typeof obj isnt 'object'
      return prefix + '[\n' + (csonify(value, indent) for value in obj).join('\n') + '\n' + prefix + ']' if Array.isArray obj
      return (prefix + esc_string(key) + ':\n' + csonify(value, indent) for key, value of obj).join '\n'
    

    测试用例:

    alert csonify
      brother:
        name: "Max"
        age:  11
        toys: [
          "Lego"
          "PSP"
        ]
      sister:
        name: "Ida"
        age:  9
    

    结果:

    "brother":
        "name":
            "Max"
        "age":
            11
        "toys":
            [
                "Lego"
                "PSP"
            ]
    "sister":
        "name":
            "Ida"
        "age":
            9
    

    没有现场演示,因为我不知道 CoffeScript 的 JSFiddle。

    现场演示:http://jsfiddle.net/vtX3p/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 2019-03-25
      相关资源
      最近更新 更多