我正在创建基于JSON和JavaScript的DSL,并且我要求将键值指定为'原始'并且不包含在字符串分隔符中。一个简单的例子是希望解释这一点:在解析到对象之前手动解析JSON
{myKey:custom_function('arg1'), myKey2:custom_function("another arg1")}
应该成为
{myKey:"custom_function('arg1')", myKey2:"custom_function(\"another arg1\")"}
这是因为在解析JSON对象时,custom_function将不存在。我需要能够解析JSON而无需评估任何值,然后只在迭代密钥时逐个扩展值。
可以使用什么正则表达式或其他方法将第一个片段转换为第二个片段?
我假设一个更简单的解决方案将覆盖90%的案例,但是编写一个防弹实施需要花费很大的精力。基于我对JavaScript的正则表达式支持的研究(显然没有lookbehind功能),我假设它需要的不仅仅是1或2行的正则表达式模式。
此外,这是一个节点应用程序,所以它的任何技巧也将有所帮助。
编辑:
这个问题似乎得到一些downvotes,但我已经离开它,无论如何,未来的Google /我自己参考的利益。这是关于什么方法/技术将工作最适合这样的问题,而且有可能很容易地面对谁的类似问题的其他节点/ JS新人一个完全有效的问题。
我很抱歉,但是,什么是DSL? –
域名特定语言。这是一个复杂的商业案例,用户有一项功能可以让他们编写脚本来指导应用程序。 – Trindaz
我觉得downvotes是由于您的DSL是一个混合JSON样机,不使那么多的意义而不是只使用JSON作为您的DSL。与管理层的DSL应该仅仅是JSON标准争论,点即是更容易维护,面向未来的,更容易实现,啦啦啦。 – balupton