arrays - 具有多个数组的 PowerShell ConvertTo-JSON
问题描述
我正在尝试将数据转换为 JSON 作为 REST API 的输入。我面临的挑战是数据应该包含多个深度(因为缺少更好的词)。我现在使用的代码是:
(@{name = "Contoso"; all_assets = "false"; all_users="false"; rules= @{type="fqdn"; operator="match"; terms=@("contoso") } }| ConvertTo-Json)
现在的输出是:
{
"all_users": "false",
"name": "Contoso",
"all_assets": "false",
"rules": {
"operator": "match",
"terms": [
"contoso"
],
"type": "fqdn"
}
}
REST-Api 抱怨数据包含无效字符。查看输出,“规则:”部分包含 {} 而不是 []。我一直在尝试各种技巧,但我似乎无法弄清楚这一点。
有人知道我在这里做错了什么吗?
解决方案
如果你想rules
包含一个对象数组而不是一个具有属性的对象,请将所有进入rules
with的内容括起来@()
。
因为terms
then 成为第 3 级,所以需要-Depth
在 ConvertTo-Json cmdlet 中添加参数:
为了更好的可读性,我没有这样做
@{
name = "Contoso"
all_assets = "false"
all_users = "false"
rules = @(
@{
type = "fqdn"
operator = "match"
terms = @("contoso")
}
)
} | ConvertTo-Json -Depth 3
输出:
{ "all_users": "false", "name": "Contoso", "all_assets": "false", "rules": [ { "operator": "match", "terms": [ "contoso" ], "type": "fqdn" } ] }
推荐阅读
- python - Mixin 中的属性可以成为嵌套对象吗?
- angularjs - 找不到 `package.json` 文件。确保您在 Node.js 项目中运行该命令
- sql-server - MSSQL - 在所有存储过程中查找和替换文本
- html - Node.js 和 Mustache.js:如何将服务器端渲染与客户端 mustache 模板分开?
- r - 精确计算多次出现
- java - Dockerfile & 安装 -> 包 'openjdk-8-jre-headless' 没有安装候选
- java - Thymeleaf 形式将除一个输入之外的所有输入传递给 java 控制器
- angular - 如何删除添加到 img src 的“不安全”
- java - JAVA货币兑换程序
- java - 如何使用服务请求作为输入参数进行 Spring REST 模板调用