我有一个示例PowerShell脚本,该脚本定义了带有一些属性的类“ Archive”:
class Archive {
[String]$Address #JSON: archive
[Int]$Port #JSON: port
[String]$SiteKey #JSON site-key
Archive() {
$this.Address = "127.0.0.1"
$this.Port = 80
}
}
$a = [Archive]::new()
$json = $a | ConvertTo-Json
$json
我正在尝试创建一个简单的脚本,该脚本需要一些值并将其输出为JSON。首先,我忽略了PowerShell中的命名约定以匹配名称。然后,我添加了带有连字符的属性名称(这不是变量命名要求的一部分)。
从C#的角度来看,我将使用[DataMember(Name = "api-name")]属性来提示使用API的JSON负载时要使用的名称。
是否可以为PowerShell属性提供命名提示,以便将对象传递给ConvertTo-Json
时,它将使用提示而不是脚本中属性的实际名称?
$field-name
答案 0 :(得分:0)
您可以通过用大括号括住名称来指定variable names that include special characters。
例如,您可以使用:
class Archive {
[String]$address
[Int]$port
[String]${site_key} # variable / property name with special characters
Archive() {
$this.address = "127.0.0.1"
$this.port = 80
$this.{site_key} = "site key"
}
}
$a = [Archive]::new()
$json = $a | ConvertTo-Json
$json
哪个应该给您这个JSON输出:
{
"address": "127.0.0.1",
"port": 80,
"site_key": "site key"
}
执行ConvertTo-Json
时,它仍将使用名称,但是通过这种方式,您可以将变量名写为任何东西。
不幸的是,它似乎不适用于类名。