如何避免 Chrome 在解析此 JSON 时崩溃?

Posted

技术标签:

【中文标题】如何避免 Chrome 在解析此 JSON 时崩溃?【英文标题】:How to avoid Chrome crashing on parsing this JSON? 【发布时间】:2020-06-22 06:41:29 【问题描述】:

我创建了一个非常简单的网页,它只解析一些 JSON 字符串,但不知何故浏览器总是崩溃。我使用 Chrome 80.0.3987.132。我用验证器测试了字符串,它确保它是有效的 JSON。如何调试我的代码以查看它失败的原因?有没有办法解析 JSON 而不会失败?

Chrome 80.0.3987.132(在 Ubuntu 上)中的结果:

<!DOCTYPE html>
<html>
<body>

<h1>Can Chrome parse JSON?</h1>

<script>
var my_json = `
   "base":[
      
         "params":
            "list":[
               
                  "description":"bla",
                  "max":0.5,
                  "min":0.0,
                  "name":"bla",
                  "stepsize":0.01,
                  "type":"float",
                  "unit":"M"
               ,
               
                  "description":"bla",
                  "max":null,
                  "min":null,
                  "name":"bla",
                  "params":[
                     
                        "description":"bla",
                        "max":15,
                        "min":5,
                        "name":"bla",
                        "stepsize":0.1,
                        "type":"float",
                        "unit":null
                     ,
                     
                        "description":"bla",
                        "max":15,
                        "min":0.1,
                        "name":"bla",
                        "stepsize":0.01,
                        "type":"float",
                        "unit":null
                     
                  ],
                  "type":"ARRAY",
                  "unit":null
               
            ]
         
      
   ]
`
JSON.parse(my_json)
</script>

</body>
</html>

【问题讨论】:

@Teemu 问题中的 sn-p 字面意思是 this icon。 因为user RomsBay reported a loss of data in Chrome,我取消了对代码部分的sn-ped,我们不希望其他用户如此容易地发生这种情况。 @CBroe 我创建了这个简单的页面,因为当我尝试从服务器读取数据时,我的浏览器总是崩溃。 在 Windows (Chrome 80.0.3987.132) 上相同。如果将此代码粘贴到控制台中,它也会中断。但是,如果您删除任何字段,它就会通过。然后,通过后,重新粘贴原始代码即可通过。应该向 Chrome 团队报告。恐怕不是 Stack Overflow 上可以解决的事情。 @CBroe 您的代码不会像从 Web 服务器返回的那样解析 JSON 字符串。 【参考方案1】:

其实这很奇怪,但是如果你删除了第二个 "unit":null 它会起作用,但我不知道为什么但试试这个 JSON:


  "base": [
    
      "params": 
        "list": [
          
            "description": "bla",
            "max": 0.5,
            "min": 0,
            "name": "bla",
            "stepsize": 0.01,
            "type": "float",
            "unit": "M"
          ,
          
            "description": "bla",
            "max": null,
            "min": null,
            "name": "bla",
            "params": [
              
                "description": "bla",
                "max": 15,
                "min": 5,
                "name": "bla",
                "stepsize": 0.1,
                "type": "float",
                "unit": null
              ,
              
                "description": "bla",
                "max": 15,
                "min": 0.1,
                "name": "bla2",
                "stepsize": 1,
                "type": "float"
              
            ],
            "type": "ARRAY",
            "unit": null
          
        ]
      
    
  ]

【讨论】:

以上是关于如何避免 Chrome 在解析此 JSON 时崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

当我的 MSVS C++ 应用程序崩溃时,如何避免弹出错误对话框

仅当通过 Testflight 安装时应用程序崩溃解析 JSON

从 url iOS 解析 json 时应用程序崩溃

ios 13 SwiftUI向后导航时如何避免导航视图内的TabView应用崩溃

Telerik Image Manager - 上载图像时的JSON解析错误,EnableAsyncUpload设置为True

Chrome DevTools:在潜在的内存不足崩溃之前暂停