【问题标题】:typescript automatically serialized a class instance?打字稿自动序列化一个类实例?
【发布时间】:2017-01-02 21:51:55
【问题描述】:

我刚刚为一个类实现了一个序列化器,如下所示:

import {File} from './file'
import Serialization from './serializable'

class User implements Serialization<User> {
  username: string
  deserialize(input) {
    this.username = input.username

    return this
  }

}

省略了一些细节

但是,我想进行序列化并将这个对象转换为 Json,我需要实现一个与我在这个反序列化器中编写的相反的序列化器

但令人费解的是,当我这样做时:

app.use('/abc', (req, res) => {
  getLoggedInUser(sessionToken)
    .then(
      user => {
        const tmp: User = s
        res.send(tmp)
      }
    ).catch(
      err => {
        console.log("err =" + JSON.stringify(err))
      }
  )

express 实际上返回了这个 User 对象的 JSON 版本。

我对这种行为感到非常惊讶。这是否意味着我不需要序列化程序,因为它是由打字稿自动完成的?还是我错过了什么?

【问题讨论】:

    标签: javascript json serialization typescript


    【解决方案1】:

    如果它是一个对象或数组,它会将其字符串化为 JSON。来自 Express 文档:

    当参数是数组或对象时,Express 会以 JSON 表示:

    res.send({ user: 'tobi' });
    res.send([1,2,3]);
    

    https://expressjs.com/en/api.html#res.send

    【讨论】:

    • 感谢您的回复。即使它是一个类的实例,它也会有这种行为?
    • 类的实例只是一个对象。它将忽略函数并将自己的属性字符串化。
    猜你喜欢
    • 2021-12-29
    • 2018-08-14
    • 2015-05-26
    • 2018-07-12
    • 2017-07-02
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多