2017-02-17 1 views
2

SharePoint 목록 항목 및 관련 데이터 집합을 JSON 개체로 변환하려고합니다. 이렇게하려면 다차원 배열을 만들고 내 SharePoint 개체를 반복하여 채 웁니다.배열을 사용하여 SharePoint Online 목록을 JSON으로 변환

이 지금까지 관련 코드입니다 : 여기 내 생각에 틈이 알고

#Lookup Source Address 
$rootWeb = $Context.Web 
$List = $rootWeb.lists.getByTitle($ListName) 
$fields = $List.Fields; 
$ListItems = $List.GetItems([Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery()) 

#Load the List 
$Context.Load($rootWeb) 
$Context.Load($List) 
$Context.Load($ListItems) 
$context.Load($fields) 
$Context.ExecuteQuery() 

$listArray = @() 
$listArray["DisplayTitle"] = @() 
$listArray["Description"] = @() 
$listArray["Setting"] = @() 
$listArray["HealthAreas"] = @() 
$listArray["ResourceType"] = @() 
$listArray["ExternalURL"] = @() 
$listArray["Active"] = @() 

Write-Host "List items are" 
foreach ($item in $ListItems) 
{ 
    $listArray["DisplayTitle"].Add($item["Title"]) 
    $listArray["Description"].Add($item["File Description"]) 
    $listArray["Setting"].Add($item["Setting"]) 
    $listArray["HealthAreas"].Add($item["Health_x0020_Area"]) 
    $listArray["ResourceType"].Add($item["Resource_x0020_Type"]) 
    $listArray["ExternalURL"].Add($item["External_x0020_file_x0020_path"]) 
    $listArray["Active"].Add($item["Currently_x0020_active_x003f_"]) 
} 

Write-Host "############################" 
Write-Host $listArray | ConvertTo-Json 

이 (어쩌면 내가 해시 테이블이 필요합니다)하지만, 단지 그것을 볼 수 없습니다. 받은 오류는 다음과 같습니다.

null 값 표현식에서는 메소드를 호출 할 수 없습니다.

그러나 루프의 각 항목에 데이터가 포함되어 있음을 확인할 때 (콘솔에 쓰는 방법으로) 내 null 변수의 출처를 확인할 수 없습니다.

답변

2

받는 오류는 SharePoint와 관련이 없으며 PowerShell과 관련이 있습니다. PowerShell 배열을 만들고 연관 배열/해시 테이블처럼 요소에 액세스하려고했습니다.

이 코드를 시도주세요 (나는 다른 열 이름을 가진 내 자신의 목록을 테스트했는데 그것을 잘 작동) :

#Lookup Source Address 
$rootWeb = $Context.Web 
$List = $rootWeb.lists.getByTitle($ListName) 
$fields = $List.Fields; 
$ListItems = $List.GetItems([Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery()) 

#Load the List 
$Context.Load($rootWeb) 
$Context.Load($List) 
$Context.Load($ListItems) 
$context.Load($fields) 
$Context.ExecuteQuery() 

$listArray = New-Object System.Collections.Generic.List[System.Object] 

Write-Host "List items are" 
foreach ($item in $ListItems) 
{ 
    $listArray.Add([hashtable]@{ 
     DisplayTitle=$item["Title"]; 
     Description= $item["File Description"]; 
     Setting= $item["Setting"]; 
     HealthAreas= $item["Health_x0020_Area"]; 
     ResourceType= $item["Resource_x0020_Type"]; 
     ExternalURL= $item["External_x0020_file_x0020_path"]; 
     Active= $item["Currently_x0020_active_x003f_"];  
     } 
    )  
} 

Write-Host "############################" 
$json = $listArray | ConvertTo-Json 
Write-Host $json 
관련 문제