微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Powershell - 无法以哈希表数组的形式将数据从文件导入到变量中

如何解决Powershell - 无法以哈希表数组的形式将数据从文件导入到变量中

我正在尝试从哈希表(键、值)数组中的文件中导入/读取数据但无法执行,因为未使用认分配符号 (=)使用冒号 (:)。我尝试了不同的方法来读取数据,但是 powershell 每次都会给我一个错误。 数据(在此处截断)采用以下格式(注意等号被替换为:

[{"name":"Alex","IQ":"A+"},{"name":"Steve","IQ":"60"},{"name":"Lisa","IQ":"90"},{"name":"Jackie","IQ":"B"}]

如何将这些数据读入数组或变量中,以便我可以使用它? 这是错误消息:

> @a = [{"name":"Alex","IQ":"B"}]
At line:1 char:7
+ @a = [{"name":"Alex",{"name":"L ...
+       ~
Missing type name after '['.
At line:1 char:14
+ @a = [{"name":"Alex",{"name":"L ...
+              ~~~~~~~
Unexpected token ':"Alex"' in expression or statement.
At line:1 char:21
+ @a = [{"name":"Alex",{"name":"L ...
+                     ~
Missing argument in parameter list.
At line:1 char:40
+ @a = [{"name":"Alex",{"name":"L ...
+                                        ~~~~~~~~
Unexpected token ':"Steve"' in expression or statement.
At line:1 char:48
+ @a = [{"name":"Alex",{"name":"L ...
+                                                ~
Missing argument in parameter list.
At line:1 char:67
+ ... ":"Alex","IQ":"9 ...
+                                                           ~~~~~~~
Unexpected token ':"Lisa"' in expression or statement.
At line:1 char:74
+ ... :"Alex","IQ":"90 ...
+                                                                 ~
Missing argument in parameter list.
At line:1 char:93
+ ... "Steve","IQ":"B ...
+                                                         ~~~~~~~~~
Unexpected token ':"Jackie"' in expression or statement.
At line:1 char:102
+ ... Steve","IQ":"B" ...
+                                                                 ~
Missing argument in parameter list.
At line:1 char:1
+ @a = [{"name":"Alex",{"name":"L ...
+ ~~
The splatting operator '@' cannot be used to reference variables in an expression. '@a' can be used only as an
 argument to a command. To reference variables in an expression use '$a'.
    + CategoryInfo          : ParserError: (:) [],ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingTypename

解决方法

您的输入似乎是 JSON,因此您需要:

  • 首先使其成为 PowerShell string[1],将其包含在 '...' 中(假设要使用该值 逐字).

  • 然后使用 ConvertFrom-Json cmdlet 将字符串解析为对象图:

$arrayOfObjects = ConvertFrom-Json '[{"name":"Alex","IQ":"A+"},{"name":"Steve","IQ":"60"},{"name":"Lisa","IQ":"90"},{"name":"Jackie","IQ":"B"}]' 

$arrayOfObjects 然后包含一个表示 JSON 输入的 [pscustomobject] 实例数组;如果你输出 $arrayOfObjects,你会看到:

name   IQ
----   --
Alex   A+
Steve  60
Lisa   90
Jackie B

[1] 问题 (=) 中作业的 RHS 以未加引号的 [ 开头,这意味着 PowerShell 以表达式模式对其进行解析,因此希望 [ 成为类型文字的一部分,例如 [string] - 请参阅概念性的 about_Parsing 帮助主题。
另请注意,符号 @ 从未在变量 assignments 中使用(其中必须使用 $),仅在 splatting 的上下文中使用;也就是说,使用 $var = ...,从不使用 @var = ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。