为什么express.js在使用res.send()的时候返回一个空的数组?
我有这个对象包含一个键和值对的数组。
console.log(myObject); [ 'askdasuni.com': '11111', 'capsfrom2011.com': '22222', 'defusionet.com': '33333' ]
当我在我的应用程序中调用res.send(myObject)时,我得到以下内容:
< HTTP/1.1 200 OK < X-Powered-By: Express < Content-Type: application/json; charset=utf-8 < Content-Length: 2 < Date: Wed, 11 Mar 2015 18:15:41 GMT < Connection: keep-alive []
我期望它发送myObject的内容,不只是“[]”。
如果我将代码更改为res.send('string'),我得到以下内容:
< HTTP/1.1 200 OK < X-Powered-By: Express < Content-Type: text/html; charset=utf-8 < Content-Length: 6 < Date: Wed, 11 Mar 2015 18:21:09 GMT < Connection: keep-alive < string
尝试发送
res.json(myObject)
res.json确保响应将具有utf8字符集和application / json内容types
不要与res.json([body]) , res.jsonp([body]) , res.send([body])相互混淆,并在需要时使用它。
res.send([机构])
发送HTTP响应。 body参数可以是一个Buffer对象,一个String,一个对象或者一个Array。
res.json([机构])
发送一个JSON响应。 这个方法与以对象或数组作为参数的res.send()相同。 但是,您可以使用它将其他值转换为JSON,例如null和undefined。 (虽然这些在技术上是无效的JSON)
所以,如果你严格要发送JSON响应,最好是使用res.json(..)
你需要把你的对象放在大括号中,而不是方括号,因为你把它作为对象而不是数组发送。 键值对必须用javascript中的大括号括起来。
看到这个答案︰ 为什么javascript数组中的string索引不增加长度大小?
Javascript数组不能有“string索引”。 一个JavaScript数组是完全数字索引。 当你设置一个“string索引”时,你正在设置对象的一个属性。 这些是等价的:
array.a ='foo'; array ['a'] ='foo'; 这些属性不是数组“数据存储”的一部分。
例如使用
{ 'askdasuni.com': '11111', 'capsfrom2011.com': '22222', 'defusionet.com': '33333' }