2017-09-15 6 views
-1

ConvertFrom-Jsonは、オブジェクトが正当なJsonであるにもかかわらず、私のJsonをオブジェクトに正常に解析できません。Powershell ConvertFrom-Jsonがノードを食べる

私はPowershellの最新バージョンを使用しています。

私はこのようにGoogleの要求JSON本体を解析しようとすると:

{ 
    "reportScope": { 
         "agencyId": "11111111111111111", 
         "advertiserId": "22222222222222222" 
        }, 
    "reportType": "adGroup", 
    "columns": [ 
        { 
         "columnName": "status" 
        }, 
        { 
         "columnName": "date" 
        }, 
        { 
         "columnName": "account" 
        }, 
        { 
         "columnName": "accountType" 
        }, 
        { 
         "columnName": "campaign" 
        }, 
        { 
         "columnName": "adGroup" 
        }, 
        { 
         "columnName": "deviceSegment" 
        }, 
        { 
         "columnName": "impr" 
        }, 
        { 
         "columnName": "clicks" 
        }, 
        { 
         "columnName": "dfaRevenue" 
        }, 
        { 
         "columnName": "cost" 
        }, 
        { 
         "columnName": "avgPos" 
        } 
       ], 
    "timeRange": { 
         "startDate": "2017-09-13", 
         "endDate": "2017-08-14" 
        }, 
    "filters": [ 
        { 
         "column": {"columnName": "impr"}, 
         "operator": "greaterThan", 
         "values": "0" 
        } 
       ], 
    "downloadFormat": "csv", 
    "maxRowsPerFile": 6000000, 
    "statisticsCurrency": "agency", 
    "verifySingleTimeZone": "false", 
    "includeRemovedEntities": "false" 
} 

私はこのようなオブジェクトを取得:

[DBG]: PS Microsoft.PowerShell.Core\FileSystem::\\psDashboard>> $objJson 


reportScope   : @{agencyId=11111111111111111; advertiserId=22222222222222222} 
reportType    : adGroup 
columns    : {@{columnName=status}, @{columnName=date}, @{columnName=account}, @{columnName=accountType}...} 
timeRange    : @{startDate=2017-09-13; endDate=2017-08-14} 
filters    : {@{column=; operator=greaterThan; values=0}} 
downloadFormat   : csv 
maxRowsPerFile   : 6000000 
statisticsCurrency  : agency 
verifySingleTimeZone : false 
includeRemovedEntities : false 




[DBG]: PS Microsoft.PowerShell.Core\FileSystem::\\psDashboard>> $objJson.filters 

column operator values 
------ -------- ------ 
     greaterThan 0  

お知らせcolumn@{columnNane=imgr}が含まれている必要がありますが、それは代わりに何が含まれていません。解析に使用

コード:

$objJson = Get-Content -Path $FileName -Raw | ConvertFrom-Json 

任意のアイデア?

+1

私の最後に問題はありません(Powershell 5 Windows 10で)。私は@ {columnName = impr}を取得します...あなたのリクエストをファイルに入れて、あなたの解析行を使ってインポートしました。 –

答えて

1

私はあなたのコードをとり、あなたが探しているオブジェクトに到達することができました。私は最初にここに文字列@ ""を入れて、それに到達することができました。あなたのように、 convertfrom-jsonにパイプしてame結果を得ました。

$test = @" 
{ 
    "reportScope": { 
         "agencyId": "11111111111111111", 
         "advertiserId": "22222222222222222" 
        }, 
    "reportType": "adGroup", 
    "columns": [ 
        { 
         "columnName": "status" 
        }, 
        { 
         "columnName": "date" 
        }, 
        { 
         "columnName": "account" 
        }, 
        { 
         "columnName": "accountType" 
        }, 
        { 
         "columnName": "campaign" 
        }, 
        { 
         "columnName": "adGroup" 
        }, 
        { 
         "columnName": "deviceSegment" 
        }, 
        { 
         "columnName": "impr" 
        }, 
        { 
         "columnName": "clicks" 
        }, 
        { 
         "columnName": "dfaRevenue" 
        }, 
        { 
         "columnName": "cost" 
        }, 
        { 
         "columnName": "avgPos" 
        } 
       ], 
    "timeRange": { 
         "startDate": "2017-09-13", 
         "endDate": "2017-08-14" 
        }, 
    "filters": [ 
        { 
         "column": {"columnName": "impr"}, 
         "operator": "greaterThan", 
         "values": "0" 
        } 
       ], 
    "downloadFormat": "csv", 
    "maxRowsPerFile": 6000000, 
    "statisticsCurrency": "agency", 
    "verifySingleTimeZone": "false", 
    "includeRemovedEntities": "false" 
} 
"@ 
$t = $test | ConvertFrom-Json 

$t.filters.column 

PS C:\WINDOWS\system32> $t.filters 

column    operator values 
------    -------- ------ 
@{columnName=impr} greaterThan 0  



PS C:\WINDOWS\system32> $t.filters.column 

columnName 
---------- 
impr 

getfromコンテンツの使用とconvertfrom-jsonの使用。

PS C:\WINDOWS\system32>  $test.filters 

column    operator values 
------    -------- ------ 
@{columnName=impr} greaterThan 0  



PS C:\WINDOWS\system32>  $test.filters.column 

columnName 
---------- 
impr  

それは私のモジュールのバージョンconvertFrom-JSONのバージョン可能性がある:

PS C:\ WINDOWS \ SYSTEM32> GCM convertfrom-JSON

CommandTypeを名バージョンソース
--- -------- ---- ------- ------
Cmdlet ConvertFrom-Json 3.1.0.0 Microsoft.PowerShell.Utility

+0

こんにちは、私は実際にPythonのバグスレッドで答えを見つけました。文字列がConvertFrom-JSONにパイプされるときに他のオブジェクトと同じように、単一のアイテム配列が奇妙になりますが、Pythonのバグロギングでは購入デザインと言われています。 Get-Contentsを1つの変数に入れた後、その変数をConvertFrom-Json(つまりパイプなし)に置くと、それは機能しました。私はむしろ自分の質問に答えるつもりはないし、すでに正しい道を歩いているので、それを入力してもいいですか?あなたがすれば、私はそれを正しくマークします。 –

関連する問題