Я хочу программно объединить данные JSON от мастера и список деталей.Упрощенный пример моего кода будет:
$master = '[{"Sample": 1.3085},{"Sample": 1.4567}]' | ConvertFrom-Json
$detail = '[{"foo":1, "bar":2},{"foo":3, "bar":4}]' | ConvertFrom-Json
$master | %{
$_ | Add-Member -MemberType NoteProperty -Name 'Detail' -Value $detail -PassThru
} | ConvertTo-Json
Я ожидаю этого:
[{
"Sample": 1.3085,
"Detail": [
{"foo" :1, "bar":2},
{"foo" :3, "bar":4}
]
}
}, {
"Sample": 1.4567,
"Detail": [
{"foo" :1, "bar":2},
{"foo" :3, "bar":4}
]
}
}
]
Но я получаю это:
[{
"Sample": 1.3085,
"Detail": {
"value": [
"@{foo=1; bar=2}",
"@{foo=3; bar=4}"
],
"Count": 2
}
}, {
"Sample": 1.4567,
"Detail": {
"value": [
"@{foo=1; bar=2}",
"@{foo=3; bar=4}"
],
"Count": 2
}
}
]
Мне кажетсячто фрагмент Add-Member
преобразует значение PSObject в строку, а не принимает ее как есть.
Кроме того: когда массив $ master содержит только один элемент , он работает лучше, хотя и некак и ожидалось, но если их больше одного, результат с указанием строки показан выше.
Это результаты с одним элементом в $ master:
{
"Sample": 1.3085,
"Detail": {
"value": [
{
"foo": 1,
"bar": 2
},
{
"foo": 3,
"bar": 4
}
],
"Count": 2
}
}
Что я делаю не так?