2016-06-20 2 views
0

Для JSON как это:Доступ значения в PS пользовательского свойства объекта генерируется из JSON

{ 
"Tours": [{ 
    "Code": "r", 
    "Name": "Tour 1", 
    "Tournaments": [{ 
     "Number": "464", 
     "Title": "Open Tournament 1" 
    }, 
    { 
     "Number": "047", 
     "Title": "Open Tournament 2" 
    }] 
}, 
{ 
    "Code": "s", 
    "Name": "Tour 2", 
    "Tournaments": [{ 
     "Number": "524", 
     "Title": "Tournament 3" 
    }, 
    { 
     "Number": "009", 
     "Title": "Tournament 4" 
    }] 
}] 
} 

при преобразовании в PS пользовательского объекта и сохраняется в переменной $ данных, я могу получить доступ к значениям в разделе «Турниры» для конкретных «Тур», как это:

$data.Tours[0].Tournaments 
$data.Tours[1].Tournaments 

Но, можно ли получить доступ к свойствам и ценности «турниры», указав «код» или значения «имя» под «Тур»? Что-то вроде этого, может быть:

$data.Tours.Code['r'].Tournaments 

На самом деле, в PS сценарии я хочу, чтобы фильтровать данные по «Кодексу» в разделе «Туры» и получить лежащие в основе «Турниры» (получить «Турниры» для конкретных «Кодекса» из 'Туры').

+0

'$ data.Tours |? Код -eq r |% Турниры' – PetSerAl

+0

@PetSerAl, спасибо! Но можно ли напрямую ссылаться на «Турниры», используя нотацию JSON и указав значение «r» для «Кода» в разделе «Тур»? – YMM

+0

* обратитесь к «Турнирам» напрямую, используя нотацию JSON * Включен ли JSON язык запросов, например XPath для XML? Я не знаю об этом. – PetSerAl

ответ

0

Вы должны были бы сделать что-то вроде:

$data.Tours | Where-Object { $_.Code -eq 'r' } | Select-Object -ExpandProperty 'Tournaments' 

Чтобы получить список каскадных кодов и турнирных чисел (где код «г») вы могли бы сделать:

$data.Tours | Where-Object { $_.Code -eq 'r' } | ForEach-Object { $Code = $_.Code; $_.Tournaments | ForEach-Object { $Code + $_.Number }} 
+0

Спасибо! Если я передам вашу команду в ForEach-Object, смогу ли я ссылаться на значение .Code из Where-Object? Например, если мне нужно объединить «Код» с «Турнирами. Номер» в блоке кода ForEach-Object. – YMM

+0

Только что обновил мой ответ, который какой-то код, который должен сделать это для вас –

+0

Отлично! Спасибо, Крис! – YMM

Смежные вопросы