Javascript 解析JSON ish数据的最佳方法-属性,如Knockout.js中的绑定参数格式?

Javascript 解析JSON ish数据的最佳方法-属性,如Knockout.js中的绑定参数格式?,javascript,parsing,Javascript,Parsing,TL;DR:如何解析Knockout.js的绑定参数格式(不是JSON而是类似的格式) -- 我有一个问题我自己回答不了 我喜欢Knockout.js和其他MVVM库接受(理解)格式配置的方式 data bind=“name:value,name2:{subname:subvalue,subname2:subvalue2},name3:value3” 这是JSON-ish,但不是有效的JSON(也就是说,可以在没有顶级{}或paren的情况下很好地运行) 问题是如何以最佳方式解析此格式,例如最好

TL;DR:如何解析Knockout.js的绑定参数格式(不是JSON而是类似的格式)

--

我有一个问题我自己回答不了

我喜欢Knockout.js和其他MVVM库接受(理解)格式配置的方式

data bind=“name:value,name2:{subname:subvalue,subname2:subvalue2},name3:value3”

这是JSON-ish,但不是有效的JSON(也就是说,可以在没有顶级
{}
或paren的情况下很好地运行)

问题是如何以最佳方式解析此格式,例如最好使用一些内置(shim)函数而不使用eval。例如,类似于JSON.parse的内容

我已经查看了Knockout.js代码以首先找到答案,但是我找不到解析绑定参数的位置。也许我忽略了显而易见的,我不知道


建议、链接、代码或任何形式的建议都值得欣赏。提前谢谢你

如果不按照mattmanser的建议查看源代码(他是对的),答案就在你的问题中:Parse

具体来说,


编辑:一种处理方法是将数据绑定属性作为数组读取(有效地在“,”上拆分),然后将项目解析为名称:值对。同样,没有看过他们的源代码。

没有像mattmanser建议的那样看源代码(他是对的),答案就在你的问题中:解析

具体来说,


编辑:一种处理方法是将数据绑定属性作为数组读取(有效地在“,”上拆分),然后将项目解析为名称:值对。同样,没有看过他们的源代码。

没有像mattmanser建议的那样看源代码(他是对的),答案就在你的问题中:解析

具体来说,


编辑:一种处理方法是将数据绑定属性作为数组读取(有效地在“,”上拆分),然后将项目解析为名称:值对。同样,没有看过他们的源代码。

没有像mattmanser建议的那样看源代码(他是对的),答案就在你的问题中:解析

具体来说,


编辑:一种处理方法是将数据绑定属性作为数组读取(有效地在“,”上拆分),然后将项目解析为名称:值对。同样,没有查看他们的源代码。

可以在这里找到Knockout.js的绑定源代码:


就像解析所有东西一样,魔鬼在细节中,这就是为什么它如此复杂

可以在这里找到Knockout.js的绑定源代码:


就像解析所有东西一样,魔鬼在细节中,这就是为什么它如此复杂

可以在这里找到Knockout.js的绑定源代码:


就像解析所有东西一样,魔鬼在细节中,这就是为什么它如此复杂

可以在这里找到Knockout.js的绑定源代码:



就像解析所有东西一样,魔鬼在细节中,这就是为什么它如此复杂

为什么不直接阅读knockout.js的源代码呢@mattmanser:正如问题中提到的,我已经尽了最大努力,但是我的javascript知识似乎不足以找到解析方法。哇!扫描得太快了。它看起来像是在这里,你可以看到做好它是很难的@mattmanser哇,太可怕了。我想知道为什么会使用这种方法,而不是本机方法(例如JSON、JS对象等)@mattmanser:谢谢,就这样!如果你把它贴出来作为答案,我很乐意接受。正如你所说,这很难。比我想象的要困难得多:(为什么不直接阅读knockout.js的源代码?@mattmanser:正如问题中提到的,我已经尽了最大的努力,但我的javascript知识似乎不足以找到解析方法。哎呀!扫描得太快了。你可以看到它就在这里,做得很难!@mattmanser哇,这太糟糕了。我想知道为什么我们使用了这种方法,而不是本机方法(如JSON、JS object等)。@mattmanser:谢谢,就这样!如果你把它粘贴为答案,我会很乐意接受。而且,正如你所说,这很难。比我预期的要难得多:(为什么不直接阅读knockout.js的源代码?@mattmanser:正如问题中提到的,我已经尽了最大的努力,但我的javascript知识似乎不足以找到解析方法。哎呀!扫描得太快了。你可以看到它就在这里,做得很难!@mattmanser哇,这太糟糕了。我想知道为什么我们使用了这种方法,而不是本机方法(如JSON、JS object等)。@mattmanser:谢谢,就这样!如果你把它粘贴为答案,我会很乐意接受。而且,正如你所说,这很难。比我预期的要难得多:(为什么不直接阅读knockout.js的源代码?@mattmanser:正如问题中提到的,我已经尽了最大的努力,但我的javascript知识似乎不足以找到解析方法。哎呀!扫描得太快了。你可以看到它就在这里,做得很难!@mattmanser哇,这太糟糕了。我想知道为什么我们使用了这种方法,而不是本机方法(如JSON、JS object等)。@mattmanser:谢谢,就这样!如果你把它粘贴为答案,我会很乐意接受。而且,正如你所说,这很难。比我预期的要难得多:(感谢您的快速回答。如问题中所述,我需要解析的格式不符合JSON规范,或者直截了当地说,不是JSON。这意味着,不幸的是,JSON解析器在这种情况下无法完成工作。只需要开始/结束括号。当您从DOM访问属性时,添加开始/结束符g字符串,然后运行.parse()