Мне нужно получить имя пользователя и адрес электронной почты для каждого пользователя в JSON ниже.
Хитрость заключается в том, что каждое свойство пользователя хранится в словаре пар имя-значение. Число пар имя-значение не является фиксированным, и порядок свойства адреса электронной почты также не является фиксированным.
{
"Users": [
{
"Username": "test",
"Attributes": [
{
"Name": "department",
"Value": "department 1"
},
{
"Name": "random attribute",
"Value": "random attribute value"
},
{
"Name": "email",
"Value": "test@gmail.com"
}
]
},
{
"Username": "test2",
"Attributes": [
{
"Name": "email",
"Value": "test2@gmail.com"
},
{
"Name": "department",
"Value": "department 1"
}
]
}
]
}
Я хочу извлечь каждого пользователя и его адрес электронной почты следующим образом:
{
"Username": "test",
"email": "test@gmail.com"
},
{
"Username": "test2",
"email": "test2@gmail.com"
}
Самая близкая, которую я получил, была эта запутанная строка:
.Users[] | (.Attributes | map (contains ( {Name:"email", Value: "test@gmail.com"} )) | any(.))
, которая возвращает
true
false