假设我向Mailchimp询问用户数据,他们会在正文中发回一个带有JSON的http请求。我能不能去:
var thingy = body.property;
或者我应该去:
var object = JSON.parse(body);
var thingy = object.property;
另外,node.js正文解析为我解析JSON吗?
答案 0 :(得分:2)
取决于API,通常会得到响应标头Content-type: application/json
。如果是这种情况,则可能不需要解析响应,因为大多数客户端都会理解它是一个json对象并为您解析它。无论如何,并非所有客户都会自动执行此操作。
答案 1 :(得分:2)
JSON通过线路从服务器以字符串形式发送。那就是JSON是什么 - 字符串格式。
它是否以字符串或已解析的Javascript对象的形式到达您的代码完全取决于您用于生成http请求的代码以及服务器设置的标头以及自动检测执行Ajax的代码的内容打电话。
如果响应头将类型设置为json,那么发出请求的一些代码会自动将它解析为Javscript。其他代码会将其留给调用者。如果服务器没有设置正确的标头,那么一些代码会自动将其检测为JSON并解析它而其他代码则不会。
所以...底线。它完全取决于服务器在响应中所做的事情以及用于发出请求的代码。您可以非常轻松地执行console.log(body)
并查看您是否拥有JSON字符串或已解析的Javascript对象。
如果你真的不确定你会得到什么样的行为,你可以测试类型并采取相应的行动(虽然给定的服务器和调用代码应该是一致的,所以你不应该改变你的行为)一旦你测试它的行为方式。
if (typeof body === "string") {
body = JSON.parse(body);
}