ConvertFrom-Json max length
I had the same problem and was able to solve it like this:
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions") $jsonserial= New-Object -TypeName System.Web.Script.Serialization.JavaScriptSerializer $jsonserial.MaxJsonLength = 67108864$Obj = $jsonserial.DeserializeObject($CourseTypesResponse)
You can use $jsonserial.MaxJsonLength
to manipulate the MaxJsonLength property
I had the same propblem when using Invoke-RestMethod
and large JSON collections in the result. I ended up adapting the methods from Parsing json with PowerShell and Json.NET to convert JSON Collections to PowerShell Objects.
# .NET JSON Serializer $global:javaScriptSerializer = New-Object System.Web.Script.Serialization.JavaScriptSerializer$global:javaScriptSerializer.MaxJsonLength = [System.Int32]::MaxValue$global:javaScriptSerializer.RecursionLimit = 99# Functions necessary to parse JSON output from .NET serializer to PowerShell Objectsfunction ParseItem($jsonItem) { if($jsonItem.PSObject.TypeNames -match "Array") { return ParseJsonArray($jsonItem) } elseif($jsonItem.PSObject.TypeNames -match "Dictionary") { return ParseJsonObject([HashTable]$jsonItem) } else { return $jsonItem }}function ParseJsonObject($jsonObj) { $result = New-Object -TypeName PSCustomObject foreach ($key in $jsonObj.Keys) { $item = $jsonObj[$key] if ($item) { $parsedItem = ParseItem $item } else { $parsedItem = $null } $result | Add-Member -MemberType NoteProperty -Name $key -Value $parsedItem } return $result}function ParseJsonArray($jsonArray) { $result = @() $jsonArray | ForEach-Object { $result += , (ParseItem $_) } return $result}function ParseJsonString($json) { $config = $javaScriptSerializer.DeserializeObject($json) return ParseJsonObject($config)}
This one worked for me quite well over the years:
Add-Type -Assembly System.Web.Extensionsfunction get-Json($data) { $json = [System.Web.Script.Serialization.JavaScriptSerializer]::new() $json.MaxJsonLength = 104857600 $out = $json.Deserialize($data, [System.Object]) return $out}