从 System.Collections.Hashtable 转换为特定的 JSON 格式在 PowerShell 中不起作用

问题描述

以下是源对象的类型:

enter image description here

我的哈希表值如下:

enter image description here

我正在尝试以以下格式获取 JSON:

enter image description here

我的哈希表值如下:

Name                           Value                                                                                                                                              
----                           -----                                                                                                                                              
modesite                       {10000,10001...}                                                                                                                    
sites                          {11800,11900...}                                                                                                                    
Tsitesata                      {12000,12001...}                                                                                                                    
direct                         {13002,13003...}     

                                                                                                                                                                                                                              

我正在尝试以以下格式获取 JSON:

{
    modesite: {
        Ids: [
            10000,10001,10002,....,10030,10032 
        ]
    },sites: {
        Ids: [
            11800,11801,11809
        ]
    },Tsitesata: {
        Ids: [
            12000,12001,12030
        ]
    },direct: {
        Ids: [
            13002,13003,13015
        ]
    }
}

解决方法

您的 minimal reproducible example 不完整,因为它不包含任何代码(特别是 $exampleObj 来自哪里?)。但是,您可以接受 toastifer's answer,也可以尝试以下操作:

$exampleObj = @{
    modesite = @( 10000,10001);
    sites    = @( 11800,11900);
    Tsitesata= @( 12000,12001);
    direct   = @( 13002,13003);
}
$desiredObj = foreach ($key in $exampleObj.Keys) {
    @{ $key = @{ Ids = $exampleObj.$Key }}
}
$desiredObj | ConvertTo-Json -Depth 8
,

不要将数组直接存储在键下。使用键“Ids”将其存储在另一个哈希表中。

   $exampleObj=@{
     modesite=@{ids=@(1,2,3)}
     sites=@{ids=@(4,5,6)}
   }

您还可以使用 ConvertFrom-Json 创建对象。插入您想要的输出,您将能够看到如何构建对象。