With Sitecore everything seems to be possible. We can convert the Sitecore Items into JSON format and vice versa.
Recently we have received once such requirement of converting third party JSON in Sitecore Items. I would like to share my experience of exploring Conversion of JSON into Item using Sitecore Powershell.
Given the option for Content authors to choose the file and store in Temp folder of Sitecore CM server(depends on scenario this can be modified). Based on the JSON file format, I have created the Sitecore Items.
Here goes my Sample JSON:
As per this sample JSON, My field mappings goes little different may not be the same.
Employee Template===>
EmployeeId--> "emplid"
EmployeeName --> "name"
EmployeeAddress--> "address"
EmployeeContactNumber--> "contact_number"
EmployeeDept--> "Node_name" (eg:"IT","CS")
Please find the powershell snippet:
$dataFolder = [Sitecore.Configuration.Settings]::DataFolder
$tempFolder = $dataFolder + "\temp\upload"
$filePath = Receive-File -Path $tempFolder -overwrite
$itemPath ="/sitecore/content/sample-prjct/Content/EmployeeData"
$templateID="{70CD4D36-64AB-4450-8A5A-E0BC18A962E2}"
$a = Get-Content -Path $filePath | ConvertFrom-Json
$a = $a.psobject.properties | select name,value
$a | foreach {
$_.value = $_.value.psobject.properties | select name,value
try
{
$item = New-Item -Path $itemPath -Name $_.value.value[1] -ItemType $templateID
}
catch
{
write-host "Failed to create Item: " $itemPath
write-host $_.Exception.Message
exit
}
if($item){
$item.Editing.BeginEdit()
$item["EmployeeId"]= $_.value.value[0]
$item["EmployeeName"]= $_.value.value[1]
$item["EmployeeAddress"]= $_.value.value[2]
$item["EmployeeContactNumber"]= $_.value.value[3]
$item["EmployeeDept"]=$_.Name
$item.Editing.EndEdit()
}
}