JSON .parse () падает на chrome - PullRequest
       36

JSON .parse () падает на chrome

2 голосов
/ 05 марта 2020

Chome (80.0.3987.132 windows build) падает при разборе Json.

Для воспроизведения:

1 - Открыть эту ссылку .

2- Введите следующие строки в консоли:

var json = document.getElementsByTagName('body')[0].innerText;
JSON.parse(json);

Файл json действителен.

Может кто-нибудь помочь нам решить эту проблему sh?

Спасибо

1 Ответ

0 голосов
/ 05 марта 2020

Похоже, что есть проблема с 1-й клавишей блока в Chrome (но не в FF):

function test() {
  var x = document.body.innerText;
  var code = x.indexOf("function");
  if(code > -1) x = x.substr(0, code);
  var y = JSON.parse(x)
  console.log(y);
}
<body onload=test() style="display:none">{"rooms": [{"tasks": [{"id": 5438567,"price": 0.0,"name": "XXXXXX","unit": "unité","timePerUnit": 0,"consumablePrice": 0.0,"vat": 0.0,"sellProductVat": 0.0,"imageUrl": null,"description": "XXXXXX","surfaceType": null,"referentialId": null,"quantity": 1.0,"detailedPrice": {"id": 7928388,"totalPrice": 5413.1,"totalPriceExcludingTaxes": 0.0,"totalPriceExcludingProducts": 0.0,"consumablesPrice": 0.0,"disasterFundPrice": 0.0,"artisanWorkforcePrice": 0.0,"homegeniusPrice": 0.0,"managerBasePrice": 0.0,"managerWorkforcePrice": 0.0,"leroyMerlinProductsPrice": 0.0,"otherProductsPrice": 0.0},"type": "custom-customer","tasks": [{"id": 5438568,"price": 3700.0,"name": "XXXXXX","unit": "unité","timePerUnit": 0,"consumablePrice": 0.0,"vat": 0.1,"sellProductVat": 0.0,"imageUrl": null,"description": "XXXXXX","surfaceType": null,"referentialId": null,"quantity": 1.0,"type": "custom-customer","tasks": [],"products": [],"creationDate": "2020-03-02T14:34:42.000+0000","version": 12,"payee": "artisan","isSelected": true,"legacyRenovationId": "","previousRenovationId": "","isWorkforceActivated": true,"isProductsActivated": true,"renovationId": "","detailedPrice": 11}],"products": [],"creationDate": "2020-03-02T14:34:42.000+0000","version": 12,"payee": "artisan","isSelected": false,"legacyRenovationId": "","previousRenovationId": "","isWorkforceActivated": true,"isProductsActivated": true,"renovationId": ""},{"id": 5438563,"price": null,"name": "XXXXXXXXXXXX","unit": null,"timePerUnit": null,"consumablePrice": null,"vat": null,"sellProductVat": null,"imageUrl": "","description": "","surfaceType": "floor","referentialId": 30,"quantity": 1.0,"detailedPrice": {"id": 7928386,"totalPrice": 1602.07,"totalPriceExcludingTaxes": 0.0,"totalPriceExcludingProducts": 0.0,"consumablesPrice": 0.0,"disasterFundPrice": 0.0,"artisanWorkforcePrice": 0.0,"homegeniusPrice": 0.0,"managerBasePrice": 0.0,"managerWorkforcePrice": 0.0,"leroyMerlinProductsPrice": 0.0,"otherProductsPrice": 0.0},"type": "referential","tasks": [{"id": 5438566,"price": 50.0,"name": "XXXXXXXXXX","unit": "m²","timePerUnit": 18,"consumablePrice": 10.0,"vat": 0.1,"sellProductVat": 0.1,"imageUrl": null,"description": "","surfaceType": "floor","referentialId": 33,"quantity": 12.0,"detailedPrice": {"id": 7928385,"totalPrice": 494.52,"totalPriceExcludingTaxes": 0.0,"totalPriceExcludingProducts": 0.0,"consumablesPrice": 0.0,"disasterFundPrice": 0.0,"artisanWorkforcePrice": 0.0,"homegeniusPrice": 0.0,"managerBasePrice": 0.0,"managerWorkforcePrice": 0.0,"leroyMerlinProductsPrice": 0.0,"otherProductsPrice": 0.0},"type": "referential","tasks": [],"products": [],"creationDate": "2020-03-02T14:33:33.000+0000","version": 12,"payee": "artisan","isSelected": true,"legacyRenovationId": "fac1ec489e","previousRenovationId": "5438205","isWorkforceActivated": true,"isProductsActivated": true,"renovationId": "5438566"}],"products": [],"creationDate": "2020-03-02T14:33:33.000+0000","version": 12,"payee": "artisan","isSelected": false,"legacyRenovationId": "8892e346b0","previousRenovationId": "5438202","isWorkforceActivated": true,"isProductsActivated": true,"renovationId": "5438563"}]}]}</body>

Но это без первого блока не; -)

function test() {
  var x = document.body.innerText;
  x = x.substr(0,x.indexOf("function")).replace("unit", "here");
  var y = JSON.parse(x);
  alert(JSON.stringify(y,null,2));
}
<body onload=test() style="display:none">{
  "rooms": [
    {
      "tasks": [
        {
          "id": 5438567,
          "price": 0.0,
          "name": "XXXXXX",
          "unit": "unité","timePerUnit": 0,"consumablePrice": 0.0,"vat": 0.0,"sellProductVat": 0.0,"imageUrl": null,"description": "XXXXXX","surfaceType": null,"referentialId": null,"quantity": 1.0,"detailedPrice": {"id": 7928388,"totalPrice": 5413.1,"totalPriceExcludingTaxes": 0.0,"totalPriceExcludingProducts": 0.0,"consumablesPrice": 0.0,"disasterFundPrice": 0.0,"artisanWorkforcePrice": 0.0,"homegeniusPrice": 0.0,"managerBasePrice": 0.0,"managerWorkforcePrice": 0.0,"leroyMerlinProductsPrice": 0.0,"otherProductsPrice": 0.0},"type": "custom-customer","tasks": [{"id": 5438568,"price": 3700.0,"name": "XXXXXX","unit": "unité","timePerUnit": 0,"consumablePrice": 0.0,"vat": 0.1,"sellProductVat": 0.0,"imageUrl": null,"description": "XXXXXX","surfaceType": null,"referentialId": null,"quantity": 1.0,"type": "custom-customer","tasks": [],"products": [],"creationDate": "2020-03-02T14:34:42.000+0000","version": 12,"payee": "artisan","isSelected": true,"legacyRenovationId": "","previousRenovationId": "","isWorkforceActivated": true,"isProductsActivated": true,"renovationId": "","detailedPrice": 11}],"products": [],"creationDate": "2020-03-02T14:34:42.000+0000","version": 12,"payee": "artisan","isSelected": false,"legacyRenovationId": "","previousRenovationId": "","isWorkforceActivated": true,"isProductsActivated": true,"renovationId": ""},{"id": 5438563,"price": null,"name": "XXXXXXXXXXXX","unit": null,"timePerUnit": null,"consumablePrice": null,"vat": null,"sellProductVat": null,"imageUrl": "","description": "","surfaceType": "floor","referentialId": 30,"quantity": 1.0,"detailedPrice": {"id": 7928386,"totalPrice": 1602.07,"totalPriceExcludingTaxes": 0.0,"totalPriceExcludingProducts": 0.0,"consumablesPrice": 0.0,"disasterFundPrice": 0.0,"artisanWorkforcePrice": 0.0,"homegeniusPrice": 0.0,"managerBasePrice": 0.0,"managerWorkforcePrice": 0.0,"leroyMerlinProductsPrice": 0.0,"otherProductsPrice": 0.0},"type": "referential","tasks": [{"id": 5438566,"price": 50.0,"name": "XXXXXXXXXX","unit": "m²","timePerUnit": 18,"consumablePrice": 10.0,"vat": 0.1,"sellProductVat": 0.1,"imageUrl": null,"description": "","surfaceType": "floor","referentialId": 33,"quantity": 12.0,"detailedPrice": {"id": 7928385,"totalPrice": 494.52,"totalPriceExcludingTaxes": 0.0,"totalPriceExcludingProducts": 0.0,"consumablesPrice": 0.0,"disasterFundPrice": 0.0,"artisanWorkforcePrice": 0.0,"homegeniusPrice": 0.0,"managerBasePrice": 0.0,"managerWorkforcePrice": 0.0,"leroyMerlinProductsPrice": 0.0,"otherProductsPrice": 0.0},"type": "referential","tasks": [],"products": [],"creationDate": "2020-03-02T14:33:33.000+0000","version": 12,"payee": "artisan","isSelected": true,"legacyRenovationId": "fac1ec489e","previousRenovationId": "5438205","isWorkforceActivated": true,"isProductsActivated": true,"renovationId": "5438566"}],"products": [],"creationDate": "2020-03-02T14:33:33.000+0000","version": 12,"payee": "artisan","isSelected": false,"legacyRenovationId": "8892e346b0","previousRenovationId": "5438202","isWorkforceActivated": true,"isProductsActivated": true,"renovationId": "5438563"}]}]}
</body>
...