使用获取api,node.js服务器发送回以下序列化对象:
app.get('/getJoe', function(request, response) {
var myObj = {};
myObj.firstname = "Joe";
myObj.age = 23;
var myObjSerialized = JSON.stringify(myObj);
response.send(myObjSerialized); //sends {"firstname":"Joe","age":23}
});
fetch API按照以下方式处理响应:
function getJoe(){
fetch('/getJoe')
.then((response) => {
return response.json();
})
.then((person) => {
console.log(typeof(person)); //outputs object
console.log(person) //outputs {firstname: "Joe", age: 23}
})
}
为什么不获取呈现字符串化对象的方式与在服务器上呈现方式相同?
采用另一种方式,如果服务器使用以下字符串对象响应获取请求:
{“名字”:“乔”,“年龄”:23}
提取是否仍应将其视为字符串化?为什么将其呈现为:
{名字:“乔”,年龄:23}
此外,无需将person转换回对象(使用JSON.parse(person)),就可以将person视为对象。
答案 0 :(得分:2)
The
response.css('a.aok-block::attr(href)').extract()
行接受return response.json();
流,并返回一个Response
,该解析为响应的反序列化版本。如果只需要纯文本,则可以使用Promise
方法:
.text()
此自动反序列化特定于return response.text();
和fetch
的{{1}}方法。如果要使用fetch
,则将只有一个文本响应,您必须使用.json()
将其转换回一个对象。