У меня проблема с использованием PowerShell v3 при преобразовании строк JSON размером более 2 МБ. Предел по умолчанию в сериализаторе JSON, используемом PowerShell, устанавливается в 2 МБ, что объясняет ошибку.
Однако, когда я десериализую объект с помощью ConvertFrom-Json на меньшем наборе (у меня есть разные объекты данных с меньшими и большими внутренними коллекциями, но это те же объекты), он возвращает очень хороший объект со всеми свойствами, к которым я могу легко получить доступ.
Чтобы преодолеть ограничения сериализатора, я попытался десериализовать данные вручную:
$jsser = New-Object System.Web.Script.Serialization.JavaScriptSerializer
$jsser.MaxJsonLength = $jsser.MaxJsonLength * 10
$jsser.RecursionLimit = 99
$outObject = $jsser.DeserializeObject($json)
Объект выглядит по-другому, кажется, что внутренние коллекции не были десериализованы, и когда я пытаюсь выполнить свойства, они возвращают пустые результаты.
Мои вопросы:
-
Успение
ConvertFrom-Json
делает некоторую дополнительную магию или каким-то образом создает шаблон для объекта перед сериализацией. Любая идея, как его реплицировать? -
Объект, который я получаю, всегда является
PSCustomObject
; если я получаю объект, который я хочу настроитьConvertFrom-Json
все равно использовать его как тип объекта в JsonSerializer?