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 に答える