为什么JSON.parse忽略一些数据?
Why JSON.parse ignore some data?
我试图理解为什么当我解析包含 HTML 的 JSON 响应时,JSON.parse
不会失败但会忽略我正在尝试的此类数据从此端点获取 http://registry.npmjs.org/core-js
.
举个例子。
fetch('http://registry.npmjs.org/core-js').then(response =>
response.json()).then(data => console.log(data));
属性 自述文件是空的,而如果您在浏览器中加载端点,自述文件将完全填充为:
"readme": "# core-js\n\nModular standard library for JavaScript. Includes polyfills for [ECMAScript 5, 2015, 2016, 2017](https://github.com/zloirock/core-js#ecmascript): [promises](https://github.com/zloirock/core-js#ecmascript-promise), [symbols](https://github.com/zloirock/core-js#ecmascript-symbol), [collections](https://github.com/zloirock/core-js#ecmascript-collections), iterators, [typed ... n\n**It's a global version (first 2 examples), for more info see [`core-js` documentation](https://github.com/zloirock/core-js/blob/v3/README.md).**\n",
但是用 JSON.parse
解析后它看起来像这样
如您所见,自述文件是空的。为什么??
仅供参考,我注意到使用 Node.js 使用
的原始问题
body = JSON.parse(body.toString('utf8'));
但后来我注意到在浏览器中我得到了相同的结果,但是,当自述文件包含某种字符、编码或任何似乎无声地失败的东西时,它只会发生在某些包中。例如:使用 jquery 这很好用。
fetch('http://registry.npmjs.org/jquery').then(response =>
response.json()).then(data => console.log(data));
也许有人知道这里发生了什么。我已经尝试了很多不同的方法来删除换行符等等,但总是得到相同的结果。
我认为您没有注意到此对象中有多个 readme
属性:根中的属性为空 ""
但是如果您打开 versions
> 3.0.0-alpha.1
(2 或 3),您会看到 readme
属性也在那里并且具有您提供的值
"readme": "# core-js\n\nModular standard library for JavaScript. Includes polyfills for [ECMAScript 5, 2015, 2016, 2017](https://github.com/zloirock/core-js#ecmascript): [promises](https://github.com/zloirock/core-js#ecmascript-promise), [symbols](https://github.com/zloirock/core-js#ecmascript-symbol), [collections](https://github.com/zloirock/core-js#ecmascript-collections), iterators, [typed ... n\n**It's a global version (first 2 examples), for more info see [`core-js` documentation](https://github.com/zloirock/core-js/blob/v3/README.md).**\n"
同意david.lucky
实际上有一个空的自述文件
"readme":"",
又填了3个"readme"
["versions"]["3.0.0-alpha.1"]["readme"]
["versions"]["3.0.0-alpha.2"]["readme"]
["versions"]["3.0.0-alpha.3"]["readme"]
我试图理解为什么当我解析包含 HTML 的 JSON 响应时,JSON.parse
不会失败但会忽略我正在尝试的此类数据从此端点获取 http://registry.npmjs.org/core-js
.
举个例子。
fetch('http://registry.npmjs.org/core-js').then(response =>
response.json()).then(data => console.log(data));
属性 自述文件是空的,而如果您在浏览器中加载端点,自述文件将完全填充为:
"readme": "# core-js\n\nModular standard library for JavaScript. Includes polyfills for [ECMAScript 5, 2015, 2016, 2017](https://github.com/zloirock/core-js#ecmascript): [promises](https://github.com/zloirock/core-js#ecmascript-promise), [symbols](https://github.com/zloirock/core-js#ecmascript-symbol), [collections](https://github.com/zloirock/core-js#ecmascript-collections), iterators, [typed ... n\n**It's a global version (first 2 examples), for more info see [`core-js` documentation](https://github.com/zloirock/core-js/blob/v3/README.md).**\n",
但是用 JSON.parse
解析后它看起来像这样
如您所见,自述文件是空的。为什么??
仅供参考,我注意到使用 Node.js 使用
的原始问题body = JSON.parse(body.toString('utf8'));
但后来我注意到在浏览器中我得到了相同的结果,但是,当自述文件包含某种字符、编码或任何似乎无声地失败的东西时,它只会发生在某些包中。例如:使用 jquery 这很好用。
fetch('http://registry.npmjs.org/jquery').then(response =>
response.json()).then(data => console.log(data));
也许有人知道这里发生了什么。我已经尝试了很多不同的方法来删除换行符等等,但总是得到相同的结果。
我认为您没有注意到此对象中有多个 readme
属性:根中的属性为空 ""
但是如果您打开 versions
> 3.0.0-alpha.1
(2 或 3),您会看到 readme
属性也在那里并且具有您提供的值
"readme": "# core-js\n\nModular standard library for JavaScript. Includes polyfills for [ECMAScript 5, 2015, 2016, 2017](https://github.com/zloirock/core-js#ecmascript): [promises](https://github.com/zloirock/core-js#ecmascript-promise), [symbols](https://github.com/zloirock/core-js#ecmascript-symbol), [collections](https://github.com/zloirock/core-js#ecmascript-collections), iterators, [typed ... n\n**It's a global version (first 2 examples), for more info see [`core-js` documentation](https://github.com/zloirock/core-js/blob/v3/README.md).**\n"
同意david.lucky
实际上有一个空的自述文件
"readme":"",
又填了3个"readme"
["versions"]["3.0.0-alpha.1"]["readme"]
["versions"]["3.0.0-alpha.2"]["readme"]
["versions"]["3.0.0-alpha.3"]["readme"]