Javascript 在JSON中查找特定节点的绝对路径

Javascript 在JSON中查找特定节点的绝对路径,javascript,json,parsing,handlebars.js,Javascript,Json,Parsing,Handlebars.js,场景我希望通过从JSON对象中的动态点(将其视为字符串)开始查找路径,例如myObject.authors[2]。name。以以下为例: 我有一个JSON: var myobject={ “标题”:“我的新帖子”, “作者”:[ { “姓名”:“史密斯”, “描述”:“姓名是史密斯” }, { “姓名”:“琼斯”, “说明”:“名称为{{#反向通行证名称}” }, { “姓名”:“林肯”, “描述”:“姓名是林肯” } ] } 我想使用定制的handlebar.js助手或js函数来

场景我希望通过从JSON对象中的动态点(将其视为字符串)开始查找路径,例如
myObject.authors[2]。name
。以以下为例:

我有一个JSON:

var myobject={
“标题”:“我的新帖子”,
“作者”:[
{  
“姓名”:“史密斯”,
“描述”:“姓名是史密斯”
},
{  
“姓名”:“琼斯”,
“说明”:“名称为{{#反向通行证名称}”
},
{  
“姓名”:“林肯”,
“描述”:“姓名是林肯”
}
]
}
我想使用定制的handlebar.js助手或js函数来查找动态属性,例如名称:
{{{{reverseParse**name**}
。因此,它将把
{{{#reverseParse name}}
替换为
Jones

潜在解决方案

如果没有预先存在的解决方案,我会感到惊讶,因为这似乎是一种常见的遭遇。然而,我一直找不到一些。有吗

我考虑创建一个反向解析器,它将查找函数名
reverseeparse
,并开始反向解析字符串,并在其运行时构造路径

Q如何从同一JSON中的动态变量获取JSON路径(将其视为字符串)

PS-如果我能以任何方式澄清,请告诉我。谢谢

编辑 函数签名的示例可以如下所示:

var reverseParse=函数([string]myString){
var-jsonPath;
...
//查找{{#reverseParse[variable]}的字符串位置
//从左边那个位置开始解析字符串
//当您遇到JSON字符时,确认并构造路径
//等等?
返回jsonPath;
}


字符串参数实际上应该是JSON格式的。

我不太明白。您是否手动创建JSON对象?为什么不动态地创建对象,然后再创建JSON.stringify()呢?最好是在对象上循环并进行替换。由于您不确定它会出现在json对象中的何处,因此在数组范围下进行修改时,可能需要使用常规的ol'递归?@karns这会以何种方式导致密集和/或性能不佳?如果要动态地创建一个到每个JSON的反向路径,那么无论如何都必须遍历JSON树node@karns我不认为它真的会表现不佳。如果只对具有k个替换的数组元素执行操作,则仍然可以获得O(N*k)性能。将json作为一个字符串来处理RegExp,并对捕获进行多次向后检查,这将非常困难worse@karn为了避免长时间的讨论,请在此处查看此答案(以及随附的较长评论)。当您进行替换时,*k会出现,因为在替换过程中需要重新扫描字符串(因此实际上它变成了O(N*(k+1)))。请记住,只有当您将JSON作为字符串处理时,才需要这样做。如果改为解析它,然后遍历,则这些操作只有O(N)。