我在 PowerShell 中有一个项目,我使用“Add-Type”创建了一个自定义类型。我想使用类,但我仅限于必须使用的系统上的 PowerShell 版本。
该对象被转换为 JSON 并使用 REST API 发送出去。为了避免一些命名问题,我最终在字段名称前加上了“”。我想在将它们发送到 API 之前将其删除。我认为进行重命名会很简单,但后来我意识到,如果我通过删除带有“”的任何内容来重命名 JSON 对象中的所有内容,我用于重命名的方法可能会导致问题。
这是自定义类型:
Add-Type -typedef @"
public class SearchFilter
{
public int _filterOrder;
public string _property;
public string _direction;
public string _value;
public string[] _values;
public string _operator;
public SearchFilter()
{
_filterOrder = 0;
_property = "";
_direction = "";
_value = "";
_values = new string[0];
_operator = "";
}
}
"@
仅使用字符串 REPLACE 方法我会得到这个:
{
"filterOrder": 0,
"property": "name",
"direction": "ASC",
"value": "value",
"values": [],
"operator": "Contains"
}
而不是这个:
{
"filterOrder": 0,
"property": "name",
"direction": "ASC",
"value": "_value_",
"values": [],
"operator": "Contains"
}
这是我正在使用的方法:
# Create search filter object
$searchFilter = New-Object -TypeName "SearchFilter"
# Convert search filter to REST API JSON format
$apiPostBody = ConvertTo-Json -InputObject $searchFilter
# Remove all "_"
$apiPostBody = $apiPostBody .Replace("_","")
我检查了 PSObject 提供的方法,但我只是不确定语法。如果可能的话,我想在转换为 JSON 之前更改现有对象,而不必创建 CLONE 或遍历 JSON 值。