【发布时间】:2021-06-22 16:34:34
【问题描述】:
我有一个从 API 获取 JSON 列表的脚本。对 API 的调用只会返回 100 条记录,因此我使用 while 循环进行多次调用,然后将每个响应附加到字符串变量 $rawData 中。一旦循环完成,我在两个附加操作的每个连接处都会得到不正确的括号,它最终看起来像这样:
}
}
]
[
{
格式正确,应该如下所示:
}
},
{
我尝试了以下方法:
$rawData -replace "\s\s\}\]\[",','
$rawData -replace "\s\s\}\n\]\[",','
$rawData -replace "\s\s\}`n\]\[",','
$rawData -replace "\}\]\[",','
$rawData -replace "\}`n\]\[",','
$rawData -replace "\}\n\]\[",','
所有这些都返回以下内容,这完全让我感到困惑:
}
}
][
{
指定为替换的逗号在哪里?它是如何在 ] 之后删除换行符的?然后我尝试使用以下方法简化它:
$rawData -replace "\]\[",','
输出:
}
}
,
{
如此接近!我假设那里有一个换行符,但我不知道如何摆脱它。我搜索了很多网站,现在完全感到沮丧。如果可能,您能告诉我正确的语法以及为什么我的尝试失败了吗?
----编辑----
谢谢麦克雷顿!这解决了这个问题,它肯定更有效。我仍在尝试了解 ConvertTo(From)-Json cmdlet 发生了什么。我仍然对 -replace 为什么不起作用以及如何使其工作以供将来参考非常感兴趣。如果有人对此有答案,那将非常有帮助。
【问题讨论】:
-
我建议您在收集 json 输出的时候解决这个问题,而不是像这样。
-
Ehm,为什么不转换from-json,将它们连接在一起,然后操作或输出为json?或者,是否没有异步读取选项?如果您提供完整的详细信息,对您的帮助会更大。
标签: regex string powershell replace