gpt4 book ai didi

powershell - 如何将类似 JSON 的字符串转换为 PowerShell 对象?

转载 作者:行者123 更新时间:2023-12-02 01:35:00 24 4
gpt4 key购买 nike

Microsoft 实用程序返回以下格式的字符串:

“作者:First.Last;名称:RootConfiguration;版本:2.0.0;生成日期:06/01/2022 13:18:10;GenerationHost:服务器;”

我想将这些字符串转换为简单的对象。如果这是真正的 JSON,我只会使用 ConvertFrom-JSON。为了尽可能少地重新发明轮子,将其转换为对象的最直接方法是什么(使用键 Author、Name、Version、GenerationDate、GenerationHost,以及明显的值。如果这些值都被视为哑字符串,那就没问题了。

如果“你只需通过一点一点地标记字符串来磨碎它”就是答案,我可以这样做,但似乎应该有一种更简单的方法,就像我可以告诉 ConvertFrom-JSON (甚至ConvertFrom-String!)“做你的事情,但将分号处理为换行符,接受右侧的空格等。”

最佳答案

  • 将手动解析与 ConvertFrom-StringData 相结合的解决方案,但请注意,条目的输入顺序不会保留,因为后者返回一个具有本质上无序条目的 [hashtable] 实例:
# Sampe input string.
$str = 'Author: First.Last; Name: RootConfiguration; Version: 2.0.0; GenerationDate: 06/01/2022 13:18:10; GenerationHost: Server;'

# Replace ":" with "=", split into individual lines, so
# that ConvertFrom-StringData recognizes the format.
$str -replace ': ', '=' -replace '; ?', "`n" | ConvertFrom-StringData

# Note: The above outputs a [hashtable].
# You could cast it to [pscustomobject], as shown below,
# but the input order of entries is lost either way.

zett42指出,如果输入字符串中的值(而不是键)包含 \ 字符,则它们需要加倍才能保持原样- 请参阅下面他的评论。

  • 仅手动解析的解决方案:
# Sampe input string.
$str = 'Author: First.Last; Name: RootConfiguration; Version: 2.0.0; GenerationDate: 06/01/2022 13:18:10; GenerationHost: Server;'

# Initialize an ordered hashtable (dictionary)
$dict = [ordered] @{}

# Split the string by ";", then each entry into key and value by ":".
$str -split '; ?' |
ForEach-Object { $key, $value = $_ -split ': ', 2; $dict[$key] = $value }

# Convert the ordered hashtable (dictionary) to a custom object.
[pscustomobject] $dict

关于powershell - 如何将类似 JSON 的字符串转换为 PowerShell 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72563345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com