为什么JSON.parse会忽略一些数据?

时间:2018-03-31 12:54:53

标签: javascript json node.js jsonparser

我试图理解为什么当我解析包含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解析后,它看起来像这样

enter image description here

如您所见,自述文件为空。为什么?

仅供参考,我注意到使用

使用Node.js的原始问题
body = JSON.parse(body.toString('utf8'));

然后我注意到在浏览器中我有相同的结果,但是,当readme有某种字符,编码或任何看似无声的失败时,它只会发生在某些包中。例如:使用jquery,这很好。

 fetch('http://registry.npmjs.org/jquery').then(response => 
 response.json()).then(data => console.log(data));

也许有人知道这里发生了什么。我已经尝试了许多不同的方法来删除换行符等等,但总是有相同的结果。

2 个答案:

答案 0 :(得分:2)

我认为您错过了此对象中有多个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"

答案 1 :(得分:1)

Agred with david.lucky

实际上有一个空的自述文件

"readme":"",

3填充"自述"

["versions"]["3.0.0-alpha.1"]["readme"]
["versions"]["3.0.0-alpha.2"]["readme"]
["versions"]["3.0.0-alpha.3"]["readme"]