You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中Promise响应返回对象数组而非JSON字符串如何解决?

问题根因

你遇到的[object Object]输出是因为直接将JavaScript对象赋值/拼接给字符串类型变量时,会默认调用对象的toString()方法,和Angular HTTP请求的基础处理逻辑无关。
Angular的HttpClient.get()默认会自动把接口返回的JSON响应反序列化为JavaScript对象,你拿到的data本身就已经是解析后的JS对象,不是原始JSON字符串,直接赋值给字符串就会触发上述的默认转换逻辑。

解决方法

分两种场景按需处理即可:

  • 如果你需要直接操作JSON里的字段:直接访问对象属性即可,不需要转字符串。比如接口返回{"name":"test","id":1},你直接用data.name、data.id就能拿到对应值。
  • 如果你确实需要拿到原始的JSON字符串,可以二选一处理:
    1. 将拿到的JS对象重新序列化为JSON字符串,调用JSON.stringify()方法即可,示例代码如下:
    return this.http.get(...)
    .toPromise()
    .then(data => {
        // 把对象转回JSON字符串
        const jsonStr = JSON.stringify(data);
        return jsonStr;
    })
    
    1. 直接指定请求响应类型为text,让HttpClient不做自动JSON反序列化,直接返回接口原始字符串内容,示例代码如下:
    return this.http.get('你的接口地址', {responseType: 'text'})
    .toPromise()
    .then(data => {
        // 这里的data直接就是接口返回的原始JSON字符串
        return data;
    })
    
额外注意

如果接口返回的是对象数组,遍历的时候要逐个处理对象属性,不要直接把数组对象和字符串拼接,否则也会出现多个[object Object]拼接的结果。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:15:04