使用数组将 SharePoint Online 列表转换为 JSON
Convert a SharePoint Online list into JSON using arrays
我正在尝试将一组 SharePoint 列表项(和关联数据)转换为 JSON 对象。为此,我尝试创建一个多维数组,然后遍历我的 SharePoint 对象以填充它。
到目前为止,这是相关代码:
#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
我知道我的想法在这里存在差距(也许我需要一个哈希表)但就是看不到它。我收到的错误是:
You cannot call a method on a null-valued expression.
但是我看不到空变量的来源,因为我已经确认循环中的每个项目都包含数据(通过写入控制台)。
您收到的错误与 SharePoint 无关,而是与 PowerShell 相关。您创建了 PowerShell 数组并尝试访问它的元素,就像它是关联的一样 array/hashtable。
请试试这个代码(我已经用我自己的列表用不同的列名测试过它,它工作正常):
#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
我正在尝试将一组 SharePoint 列表项(和关联数据)转换为 JSON 对象。为此,我尝试创建一个多维数组,然后遍历我的 SharePoint 对象以填充它。
到目前为止,这是相关代码:
#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
我知道我的想法在这里存在差距(也许我需要一个哈希表)但就是看不到它。我收到的错误是:
You cannot call a method on a null-valued expression.
但是我看不到空变量的来源,因为我已经确认循环中的每个项目都包含数据(通过写入控制台)。
您收到的错误与 SharePoint 无关,而是与 PowerShell 相关。您创建了 PowerShell 数组并尝试访问它的元素,就像它是关联的一样 array/hashtable。
请试试这个代码(我已经用我自己的列表用不同的列名测试过它,它工作正常):
#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