Создать строковый ключ для сложного пути JSON

Мне нужно получить доступ и провести серию операций на большом объекте 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 ответа

Решение

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".

Вы пробовали что-то вроде

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

Это сохранит ссылку на это "местоположение" в вашем более крупном объекте, и вы можете ссылаться на атрибуты внутри, как reference[attribute],

Причина result['project.properties'] не работает то, что он ищет атрибут с ключом 'project.properties', которого нет у вашего объекта.

Другие вопросы по тегам