如何将 JSON 转换为 CoffeeScript 并写入文件“.coffee”?
Posted
技术标签:
【中文标题】如何将 JSON 转换为 CoffeeScript 并写入文件“.coffee”?【英文标题】:How convert JSON to CoffeeScript and write on a file ".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 完全兼容。如果你想重塑对象,那就是另一个问题了。 【参考方案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/
【讨论】:
以上是关于如何将 JSON 转换为 CoffeeScript 并写入文件“.coffee”?的主要内容,如果未能解决你的问题,请参考以下文章
如何将胖箭头AngularJS转换为coffeescript
如何将 JavaScript for 循环转换为 CoffeeScript?