【发布时间】:2012-05-13 10:12:56
【问题描述】:
我正在创建一个基于 JSON 和 JavaScript 的 DSL,并且我需要让键值被指定为“原始”并且不包含在字符串分隔符中。一个简单的例子,希望能解释这一点:
{myKey:custom_function('arg1'), myKey2:custom_function("another arg1")}
应该变成
{myKey:"custom_function('arg1')", myKey2:"custom_function(\"another arg1\")"}
这是因为在解析 JSON 对象时,custom_function 将不存在。我需要能够在不评估任何值的情况下解析 JSON,然后只在迭代键时一个接一个地扩展值。
我可以使用什么正则表达式或其他方法将第一个 sn-p 转换为第二个?
我假设一个更简单的解决方案将涵盖 90% 的情况,但编写一个防弹实现将需要付出很多努力。根据我对 JavaScript 的正则表达式支持(显然没有后向功能)所做的研究,我假设它需要的不仅仅是 1 或 2 行正则表达式模式。
此外,这是针对节点应用程序的,因此它为此提供的任何技巧也会有所帮助。
编辑:
这个问题似乎得到了一些反对意见,但为了将来的谷歌员工/我自己的参考,我还是把它留了下来。关于哪种方法/技术最适合此类问题,这是一个完全有效的问题,并且很容易有其他 node/js 新手面临类似问题。
【问题讨论】:
-
域特定语言。它适用于复杂的业务案例,其中用户拥有一项功能,可以让他们编写脚本来指示应用程序。
-
我觉得投反对票是因为您的 DSL 是一个混合 JSON 模型,与仅使用 JSON 作为您的 DSL 相比,这没有多大意义。与管理层争论 DSL 应该只是 JSON 标准,重点是更易于维护、面向未来、更易于实施,啦啦啦。
标签: javascript json node.js