json - ConvertFrom-Json最大长度

标签 json powershell

在转换大小超过2MB的JSON字符串时,使用PowerShell v3时出现问题。 PowerShell使用的JSON序列化程序的默认限制设置为2MB,这说明了错误。

但是,当我在较小的集合上使用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中的对象类型?
  • 最佳答案

    我遇到了同样的问题,并且能够这样解决:

    [void][System.Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions")        
    $jsonserial= New-Object -TypeName System.Web.Script.Serialization.JavaScriptSerializer 
    $jsonserial.MaxJsonLength  = 67108864
    $Obj = $jsonserial.DeserializeObject($CourseTypesResponse)
    

    您可以使用$jsonserial.MaxJsonLength来操纵MaxJsonLength属性

    来源:https://social.technet.microsoft.com/Forums/windowsserver/en-US/833c99c1-d8eb-400d-bf58-38f7265b4b0e/error-when-converting-from-json?forum=winserverpowershell&prof=required

    关于json - ConvertFrom-Json最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16854057/

    相关文章:

    powershell - 使用Powershell管道通过调用函数向对象集合添加动态属性

    javascript - 需要将 JSON 对象转换为 Highcharts 的 JSON 数组

    android - 将 JSON 数据检索到 ListView 中

    xml - 使用 Powershell 在具有命名空间的 XML 中选择具有 Xpath 的属性

    powershell - 对象输出的奇怪延迟后跟开始 sleep (或直到脚本结束)

    rest - Office365 Outlook REST API 不返回所有邮件

    php - 使用 SLIM3 将 PHP 数组转换为 JSON 数组并获取响应

    Java对象列表按未排序的特定对象排序

    json - 在 postgresql 中,如何在 jsonb 键上返回一个 bool 值而不是字符串?

    powershell - 变量替换 - 引用不起作用