我有以下JSON
文件(来自VS项目的bundleconfig.json
文件):
[
{
"outputFileName": "Scripts/a.js",
"inputFiles": [ "Scripts/b.js", "Scripts/c.js" ]
},
...
]
我正在解析它:
$json = Get-Content $filePath -Encoding UTF8 | `
Out-String | `
ConvertFrom-Json
我希望结果$json
是Array
,但似乎不是。当我试图看到数组的内容时:
$json | ForEach-Object { $_ }
没有打印出来(更正:打印空行)。所以,我认为$json
实际上并不是一个数组,并试图找出它的类型:
$json.GetType()
$json | ForEach-Object { $_ }
这是奇怪的部分。 $json.GetType()
打印出System.Array
(以及其他内容),现在ForEach-Object
按预期工作!
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
8
outputFileName : Scripts/a.js
inputFiles : {Scripts/b.js,Scripts/c.js}
所以,我的代码仅在$json.GetType()
命令存在时才有效,否则就不行。
我可以简单地离开$json.GetType()
命令并完成它,但我必须知道这种行为背后的原因。
有什么想法吗?
更新:
PSVersion: 5.0.10586.122
UTF-8
.json
和那几行代码(没有$json.GetType()
命令)创建了一个repro文件夹,它按预期工作。