我需要访问并对大型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']
更不用说我必须使用的整个深度路径。
是否有一种很好的方法可以让路径重复使用,而不必多次输入整个东西?
答案 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'的属性,而你的对象没有这个属性。