2016-03-04 48 views
1

我想在PowerShell中實現ReST請求。以下是我在PowerShell中的$響應。解析PowerShell中的ReST響應

@type   : bundleObject 
id    : ZZZZZZ160000000000RU 
orgId   : 000007 
name    : xxxxxxxxxx 
description  : Bundle being used for QA. 
createTime  : 2015-04-24T15:13:24.000Z 
updateTime  : 2015-04-24T15:13:24.000Z 
createdBy  : [email protected] 
updatedBy  : [email protected] 
lastVersion  : 1.0 
paid    : False 
accessType  : PUBLIC 
objects   : {@{@type=bundleRefObject; objectTypeCode=17; 
        objectId=ZZZZZZ17000000000003; 
        objectName=Mapping_01; objectDescription=; 
        objectUpdateTime=2015-04-24T15:05:41.000Z}, 
        @{@type=bundleRefObject; objectTypeCode=17; 
        objectId=ZZZZZZ17000000000004; 
        objectName=Mapping_02; objectDescription=; 
        objectUpdateTime=2015-04-24T15:09:28.000Z}, 
        @{@type=bundleRefObject; objectTypeCode=17; 
        objectId=ZZZZZZ17000000000005; 
        objectName=Mapping_03; objectDescription=; 
        objectUpdateTime=2015-04-24T15:11:59.000Z}} 
externalId  : CYIhYNVCSdC6J17N-LyA6A 

在對象部分,有3個對象標識符。我需要將這些ID &名稱複製到列表中,供以後使用。我已經成功地獲取使用

$responseobject = $response.objects 

不過,我不確定我如何可以獲取對象名稱&對象的ID,並保存在一個列表中的對象的一部分。我應該在這裏使用PSCustomObject嗎?

-------------------------- Updated

還有一個查詢在這裏。我添加了值一個HashMap與

$response_connection_hashmap = $response_connection|foreach { 
    @{ $_.name = $_.id } 
    } 

然而,在與主要

$response_connection_hashmap.Item('Key_1') 

我得到錯誤讀取值

Exception getting "Item": "Cannot convert argument "index", with value: "Key_1", for "get_Item" to type "System.Int32": "Cannot convert value "Key_1" to type "System.Int32". Error: "Input string was not in a correctformat. 

我失去了什麼東西?

回答

1

答案取決於你打算如何使用這些值。

如果你需要的僅僅是一組ID,你可以使用

($response.objects).objectIds 

,或者在更長的形式(必要對舊版本的PS)

$response.objects | Select-Object -ExpandProperty objectIds 

如果您需要拉出這些值以逐一對它們進行操作,您可以使用foreach來迭代對象。

$response.objects | foreach { 
    Do-SomethingWith -id $_.objectID -updateTime $_.objectUpdateTime 
} 

如果需要(以用於進一步處理)包含的所有對象的ID和註冊的變量,那麼就可以建立包含HashMap的數組:

$responseObjectList = $response.objects | foreach { 
    @{ id = $_.objectID; updateTime = $_.objectUpdateTime } 
} 

或者PSCustomObject S,如果希望他們打印得很好。

$responseObjectList = $response.objects | foreach { 
    [PSCustomObject]@{ id = $_.objectID; updateTime = $_.objectUpdateTime } 
} 
+0

感謝您的迴應!這是有幫助的!我打算在進一步的ReST調用中使用id值。哈希映射通常包含一個鍵值對。但在我的情況下,我需要一個包含單個值列表的數組,例如id或name,以便解析數組更容易,並且每個元素使用id作爲變量調用休息請求 – live2learn

+0

如果您只想要一個ID值數組,它就像'($ response.objects).objectId'一樣簡單 –

+0

噢!這非常簡單!感謝您的幫助! – live2learn