我有一个休息服务,该服务以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"}]
谢谢。
答案 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;
}
可能有更干净的方法可以做到这一点,但这只是一个简单的例子。