Powershell ConvertTo-JSON, возвращающий «вложенный» объект - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь сделать POST-запрос на мой сервер. Все было хорошо, пока я не решил преобразовать свой объект в JSON. Вот мой код:

$postParams = @{
  Login = "JonSnow66";
  Password = "LetItSnow";
  Email = "Jon.Snow@wall.com";

  Name = "Jon Snow";
  Desc = "I know nothing";
  BirthDate = "1572 2 16";
  Img = Get-Content -Path ./PH_img.txt | Out-String;
  Type = "Admin";
}

Invoke-WebRequest -Uri http://localhost:3000/api/add/user -Method POST -Body (ConvertTo-Json $postParams -Compress)

Вместо возврата обычного объекта JSON, например:

{
"Login": "JonSnow66"
...
}

Возвращает:

{{
    "Login":  "JonSnow66",
    "BirthDate":  "1572 2 16",
    "Desc":  "I know nothing",
    "Name":  "Jon Snow",
    "Type":  "Admin",
    "Password":  "LetItSnow",
    "Img":  "/9j/4<BASE64>/Z\r\n",
    "Email":  "Jon.Snow@wall.com"
}: ""}

Я просто начинающий PowerShell.

1 Ответ

0 голосов
/ 02 мая 2018

Я думаю, вам нужно указать ContentType для Invoke-WebRequest, чтобы он был «application / json». Если вы не укажете тип содержимого и выполняете публикацию, то я думаю, что командлет предполагает, что вы отправляете форму по умолчанию, и это может объяснить дополнительные { } символов, которые вы видите в результате.

Вот модифицированный код:

Invoke-WebRequest -Uri 'http://localhost:3000/api/add/user' -Method POST  -ContentType 'application/json' -Body (ConvertTo-Json $postParams -Compress)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...