簡體   English   中英

在 Powershell 中輸入 JSON 數據

[英]Inputting JSON data in Powershell

目前,我正在嘗試調用 API 來運行 POST,並將 JSON 數據作為正文。 所以我想知道是否有人能夠告訴我如何在變量$postParams格式化下面的文本。 我對使用 JSON 還很陌生,所以我遇到了這個問題。

目前,我只有以下內容,不知道如何處理第二行。

$postParams = @{name='Example'}

這是我希望添加到 $postParams 的全部數據。 所以如果你能幫助我解決第 2、4 和 8 項,那就太棒了。 謝謝!

{
    "name":"Example",
    "template":{"name":"Template"},
    "url":"http://localhost",
    "page":{"name":"Landing Page"},
    "smtp":{"name":"Sending Profile"},
    "launch_date":"2019-10-08T17:20:00+00:00",
    "send_by_date":null,
    "groups":[{"name":"test group"}]
}

您將需要一個here-stringConvertFrom-Json

這里字符串

引號也用於創建 here-string。 here-string 是單引號或雙引號字符串,其中引號按字面解釋。 一個 here-string 可以跨越多行。 here-string 中的所有行都被解釋為字符串,即使它們沒有用引號括起來。

結果代碼:

# Use a PowerShell here string to take JSON as it is
$jsonString = @"
{
    "name":"Example",
    "template":{"name":"Template"},
    "url":"http://localhost",
    "page":{"name":"Landing Page"},
    "smtp":{"name":"Sending Profile"},
    "launch_date":"2019-10-08T17:20:00+00:00",
    "send_by_date":null,
    "groups":[{"name":"test group"}]
}
"@

# Pipe the string to create a new JSON object
$jsonObject = $jsonString | ConvertFrom-Json

# The resulting JSON object has properties matching the properties in the orig. JSON
$jsonObject.name
$jsonObject.url

# Nested property
$jsonObject.template.name

# Nested property in array
$jsonObject.groups[0].name

我已經在tio.run 上發布了上述代碼的在線版本,因此您可以使用它。

如果要更新$jsonObject多個屬性,可以執行以下操作:

 $jsonObject.name = "NEW NAME"
 $jsonObject.url = "NEW URL"

 $jsonObject | ConvertTo-Json

ConvertTo-Json將獲取您的對象並創建適當的 JSON 字符串:

{
  "name": "NEW NAME",
  "template": {
    "name": "Template"
  },
  "url": "NEW URL",
  "page": {
    "name": "Landing Page"
  },
  "smtp": {
    "name": "Sending Profile"
  },
  "launch_date": "2019-10-08T17:20:00+00:00",
  "send_by_date": null,
  "groups": [
    {
      "name": "test group"
    }
  ]
}

如果您的$jsonObject具有兩個以上的深度級別,請使用-Depth參數,否則並非所有對象信息都將包含在 JSON 字符串中。

ConvertTo-Json

-深度

指定包含在 JSON 表示中的包含對象的級別數。 默認值為 2。

這是ConvertTo-Json示例的tio.run 鏈接

希望有幫助。

我目前無法測試它,但試試這個。

$postParams = @'
{
    "name":"Example",
    "template":{"name":"Template"},
    "url":"http://localhost",
    "page":{"name":"Landing Page"},
    "smtp":{"name":"Sending Profile"},
    "launch_date":"2019-10-08T17:20:00+00:00",
    "send_by_date":null,
    "groups":[{"name":"test group"}]
}
'@

創建一個哈希表,然后轉換為 JSON:

    $Hashtable = @{
        Key1 = "Value1"
        Key2 = "Value2"
    }

    $Json = $Hashtable | ConvertTo-Json

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM