JS将大(大于53位)数字转换为字符串

时间:2018-10-31 21:09:07

标签: javascript json angular

我有一个休息服务,该服务以JSON响应。 JSON的属性之一包含太大的整数,我想在javascript破坏它之前将其作为字符串获取。可能吗我试图用angular的HTTP拦截器拦截每个响应并解析json,但是没有成功。这是我的代码。

private parseJson(res: HttpResponse<string>): HttpResponse<any> {
    // body is string here
    let body: string = res.body;
    if (typeof body === 'string') {
       body = (body === '') ? null : JSON.parse(body, (key: any, value: any) => this.convertIdToString(key, value));
    }
return res.clone({body});

}

private convertIdToString(key, value): any {
    if (key === 'id' && typeof value !== 'string') {
      return value + '';
    }
    return value;
}

示例json(其余服务必须对其他应用程序使用整数进行响应,我们无法对其进行修改):

[{"id":10555555552168198656,"name":"something"}]

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以简单地尝试覆盖JSON属性以进行解析,然后在请求完成后将其重新设置。请注意,在此期间,没有其他任何东西正在使用它。

var oldparse = JSON.parse;
JSON.parse = function(value){
    //...do whatever you want
    oldparse(value);
}

//run your request
.then((result)=>{
    // do more stuff
    JSON.parse = oldparse;
}

可能有更干净的方法可以做到这一点,但这只是一个简单的例子。