【问题标题】:Axios is parsing typescript object not correctlyAxios 解析打字稿对象不正确
【发布时间】:2020-10-24 04:09:00
【问题描述】:

我有一个用户的打字稿对象,其中包括一个id: number。这个 id 在内部从 axios 解析为字符串,这是错误的,我的服务器不接受,所以我想解决这个问题。

我的 axios 调用如下所示: axios.post(${url}, user, { withCredentials: true }); 和 User 对象如下所示:

export default class User {
    Id: number;

    Username: string;

    Password: string;

    constructor(Id: number, Username: string, Password: string) {
      this.Id = Id;
      this.Username = Username;
      this.Password = Password;
    }
}

解析后的对象如下所示: "{"Id":"1337","Username":"test","Password":"admin"}"

预期的对象应该是这样的:"{"Id":1337,"Username":"test","Password":"admin"}"

我的想法是手动构建 json 并对其进行字符串化,但由于 axios 在内部再次使用字符串化,因此无法按预期工作。

【问题讨论】:

  • axios 几乎肯定不会对此负责。您在哪里/如何填充对象上的 Id 属性?
  • 谢谢,我是本地开发人员,没想到,打字稿允许我将字符串放入数字属性中...我将 select html 元素的值直接分配给我的 id,实际上是一个字符串。
  • @T.J.Crowder 同意你的看法。这里有问题。
  • TypeScript 在运行时不存在,仅在 transpilation 时存在 - 如果通过网络传输的是 "{\"Id\": \"1337\"}",那么 Id 属性的值将是字符串。
  • Incorrect result in JavaScript calculation 的重复(value 始终是一个字符串)。

标签: json typescript axios


【解决方案1】:

问题与 axios 无关。我从<select> 标记中获取了值,并将其直接放入我的 Id 属性中。这个值是一个字符串,我的 id 属性也是一个导致问题的字符串。将初始化值转换为数字有效:Number(this.updatedUserId) 并解决了我的问题。

这也在这里得到进一步解释:Incorrect result in JavaScript calculation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-27
    • 2017-01-22
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2023-03-07
    • 2023-02-03
    相关资源
    最近更新 更多