2015-11-04 60 views
1

一直工作了一个小时,无法到达它的底部。下面的代码建立哈希表的阵列,增加了该阵列到另一个散列表与一群其他键 - 值对沿,然后转换一大堆JSON:哈希表数组没有被转换为JSON通过ConvertTo-Json

$01_ch_channel_hist_id = @{"ColumnName"="01_ch_channel_hist_id";"ColumnType"="bigint"} 
$02_ch_channel_id = @{"ColumnName"="02_ch_channel_id";"ColumnType"="bigint"} 
$08_ch_load_id = @{"ColumnName"="08_ch_load_id";"ColumnType"="bigint"} 
$columns = $01_ch_channel_hist_id,$02_ch_channel_id,$08_ch_load_id 
$ChannelDimH = @{} 
$ChannelDimH.Add("Columns",$columns) 
$ChannelDimH.Add("TableName","CHANNEL_DIM_H") 
$ChannelDimH.Add("UniqueColumn","channel_id") 
$tables = @() 
$tables += $ChannelDimH 
$sqoopOracleTableAndColumnMetadata = @{} 
$sqoopOracleTableAndColumnMetadata.Add("tables",$tables) 

$sqoopOracleTableAndColumnMetadata | ConvertTo-Json 

这里是输出:

{ 
    "tables": [ 
        { 
         "TableName": "CHANNEL_DIM_H", 
         "UniqueColumn": "channel_id", 
         "Columns": "System.Collections.Hashtable System.Collections.Hashtable System.Collections.Hashtable" 
        } 
       ] 
} 

注意,“列”阵内hastables得到返回:

"System.Collections.Hashtable System.Collections.Hashtable System.Collections.Hashtable" 

这些哈希表中的数据不会出现在我的JSON文件内。为什么不?

+0

啊我已经想通了。它的ConvertTo-Json的深度参数:$ sqoopOracleTableAndColumnMetadata | ConvertTo-Json -Depth 10 – jamiet

+0

很高兴听到你明白了,我正要提出'Depth'参数,因为几个月前我有同样的问题。您应该将您的发现作为答案发布,并将其标记为解决问题的其他人的答案。 :) – Bluecakes

回答

1

想通了。 CallTo ConvertTo-Json需要深度指定

$01_ch_channel_hist_id = @{"ColumnName"="01_ch_channel_hist_id";"ColumnType"="bigint"} 
$02_ch_channel_id = @{"ColumnName"="02_ch_channel_id";"ColumnType"="bigint"} 
$08_ch_load_id = @{"ColumnName"="08_ch_load_id";"ColumnType"="bigint"} 
$columns = $01_ch_channel_hist_id,$02_ch_channel_id,$08_ch_load_id 
$ChannelDimH = @{} 
$ChannelDimH.Add("Columns",$columns) 
$ChannelDimH.Add("TableName","CHANNEL_DIM_H") 
$ChannelDimH.Add("UniqueColumn","channel_id") 
$tables = @() 
$tables += $ChannelDimH 
$sqoopOracleTableAndColumnMetadata = @{"tables"=$tables} 
#$sqoopOracleTableAndColumnMetadata.Add("tables",$tables) 

$sqoopOracleTableAndColumnMetadata | ConvertTo-Json -Depth 4