为复杂的json路径创建字符串键

时间:2013-03-27 16:13:50

标签: node.js jsobject

我需要访问并对大型json对象进行一系列操作。我需要阅读和更改的一些内容非常深入到树中,其路径如下:

result.project.properties[0]['hudson.model.ParametersDefinitionProperty'][0].parameterDefinitions[0]['hudson.model.BooleanParameterDefinition']

这条道路是我将一遍又一遍地引用的。我希望能够做到这样的事情:

key = "project.properties[0]['hudson.model.ParametersDefinitionProperty']  [0].parameterDefinitions[0]['hudson.model.BooleanParameterDefinition']"

所以我可以读取或写入这样的路径:

result[key]

但节点甚至不能使用:

result['project.properties']

更不用说我必须使用的整个深度路径。

是否有一种很好的方法可以让路径重复使用,而不必多次输入整个东西?

2 个答案:

答案 0 :(得分:2)

result[key]指的是一个对象(键),您将其初始化为:

key = "project.properties[0]['hudson.model.ParametersDefinitionProperty']  [0].parameterDefinitions[0]['hudson.model.BooleanParameterDefinition']"

在您的JSON对象中,没有具有该大名称的对象,因此它不起作用。 如果你不想输出整件事,试试这个:

shortResult = result.project.properties[0]['hudson.model.ParametersDefinitionProperty'][0].parameterDefinitions[0]['hudson.model.BooleanParameterDefinition'];

从这里你可以访问“BooleanParameterDefinition”里面的东西。

答案 1 :(得分:1)

你有没有试过像

这样的东西
var reference = result.project.properties[0]['hudson.model.ParametersDefinitionProperty'][0].parameterDefinitions[0]['hudson.model.BooleanParameterDefinition'];

这将在较大的对象中保留对该“位置”的引用,并且您可以引用内部的属性为reference[attribute]

result['project.properties']不起作用的原因是它正在寻找一个带有'project.properties'的属性,而你的对象没有这个属性。