Fetch从服务器检索序列化的对象。为什么在读取内部检查时已经反序列化了?

时间:2018-11-27 01:28:01

标签: node.js express fetch-api

使用获取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视为对象。

1 个答案:

答案 0 :(得分:2)

The

response.css('a.aok-block::attr(href)').extract()

行接受return response.json(); 流,并返回一个Response,该解析为响应的反序列化版本。如果只需要纯文本,则可以使用Promise方法:

.text()

此自动反序列化特定于return response.text(); fetch的{​​{1}}方法。如果要使用fetch,则将只有一个文本响应,您必须使用.json()将其转换回一个对象。