J'essaie de créer un tableau sérialisé JSON. Lorsque ce tableau ne contient qu'un seul élément, je reçois une chaîne, pas un tableau de chaînes (en JSON).
Plusieurs éléments (fonctionne comme prévu):
PS C:\> @("one", "two") | ConvertTo-JSON
[
"one",
"two"
]
Tableau à élément unique (pas comme prévu):
PS C:\> @("one") | ConvertTo-JSON
"one"
Est-ce que je manque quelque chose?
Essayez sans le pipeline:
PS C:\>ConvertTo-Json @('one', 'two')
[
"one",
"two"
]
PS C:\>ConvertTo-Json @('one')
[
"one"
]
J'ai rencontré ce problème aussi mais c'était parce que ma structure était trop profonde et que ConvertTo-Json aplatit tout ce qui se trouvait sous une certaine profondeur en chaîne.
Par exemple:
PS C:\> $MyObject = @{ "a" = @{ "b" = @{ "c" = @("d") } } }
PS C:\> ConvertTo-Json $MyObject
{
"a": {
"b": {
"c": "d"
}
}
}
Pour résoudre ce problème, vous pouvez passer une valeur plus grande à -Depth.
PS C:\> ConvertTo-Json $MyObject -Depth 100
{
"a": {
"b": {
"c": [
"d"
]
}
}
}
Face au même problème aujourd'hui. Juste pour ajouter, si vous avez un objet comme celui-ci
@{ op="replace"; path="clientName"; value="foo"}
alors vous devez le spécifier comme
ConvertTo-Json @( @{ op="replace"; path="clientName"; value="foo"} )
Le double @ peut parfois devenir déroutant.