如何将JSON转换为CoffeeScript并在文件“.coffee”上写入?

时间:2013-09-23 15:28:55

标签: json coffeescript

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

JSON:

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

到CoffeeScript:

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

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:-4)

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

https://github.com/rstacruz/js2coffee