首页 > 解决方案 > 通过powershell更新sendgrid个性化json文件

问题描述

想通过 powershell 更新下面的 sendgrid 个性化 json 文件以添加一个电子邮件 ID。

从:-

{
    "personalizations": [{
        "to": [{"email": "abc1@xyz.com"}, {"email": "abc2@xyz.com"}]
    }]
}

到:-

{
    "personalizations": [{
        "to": [{"email": "abc1@xyz.com"}, {"email": "abc2@xyz.com"}, {"email": "abc3@xyz.com"}]
    }]
}

已尝试将其保存到文件并使用 Add-Member 但这不起作用。

$EmailTemplateFilePath = "C:\EmailTemplate.json"
$body = [System.IO.File]::ReadAllText($EmailTemplateFilePath)
$body = ConvertFrom-Json -InputObject $body

标签: jsonpowershellsendgrid

解决方案


# Parse the input JSON into a custom object ([pscustomobject]).
$obj = (@'
{
  "personalizations": [{
      "to": [{"email": "abc1@xyz.com"}, {"email": "abc2@xyz.com"}]
  }]
}
'@ | ConvertFrom-Json)

# Append a new custom object with a new email address.
$obj.personalizations[0].to += [pscustomobject] @{ email = 'abc3@xyz.com' }

# Convert back to JSON.
$obj | ConvertTo-Json -Depth 3

请注意,不幸的是需要-Depth 3确保将 parsed-from-JSON 对象正确转换回 JSON - 请参阅此 GitHub 问题

以上产生:

{
  "personalizations": [
    {
      "to": [
        "@{email=abc1@xyz.com}",
        "@{email=abc2@xyz.com}",
        "@{email=abc3@xyz.com}"
      ]
    }
  ]
}

推荐阅读