0

我需要访问并在一个大的 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']

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

有没有一种好方法可以使路径可重用,而不必多次输入整个内容?

4

2 回答 2

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”中的内容。

于 2013-03-27T16:43:48.383 回答
1

你有没有尝试过类似的东西

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

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

result['project.properties']不起作用的原因是它正在寻找具有键“project.properties”的属性,而您的对象没有该属性。

于 2013-03-27T16:47:14.373 回答