AngularJS中$http.get获取数据时嵌套JSON数组响应异常问题
问题原因及修复方案
原因分析
你遇到的嵌套JSON数组被篡改的情况,本质是AngularJS的$http服务解析响应时出现了异常,把原本的数组转换成了{type: "json", value: "..."}的结构,常见触发原因有两个:
- 服务器响应头配置错误:如果服务器返回的响应头不是
application/json(比如是text/plain或text/html),Angular默认的JSON解析器不会自动处理响应内容,后续默认转换逻辑会把JSON字符串包装成这种type-value结构。 - 响应转换逻辑被自定义修改:如果项目里全局或针对该请求修改了
$http的transformResponse函数,可能对JSON内容做了额外的包裹处理。
修复方案
方案1:修正服务器响应头(优先推荐)
修改服务器端代码,确保./getData接口返回时,响应头设置为Content-Type: application/json。这样Angular的$http会自动识别并解析JSON内容,直接得到预期的嵌套数组结构。
方案2:手动指定响应转换逻辑
如果无法修改服务器配置,可以在请求时手动添加转换逻辑,强制解析JSON:
$http.get("./getData", { transformResponse: function(data) { // 手动将响应字符串解析为JSON对象 return angular.fromJson(data); } }).then((response) => { console.log(response); // 此时response.data.jdata1[0].othertotal1会是预期的数组格式 });
方案3:检查全局$http配置
排查项目中是否有全局修改$httpProvider.defaults.transformResponse的代码,如果存在不必要的转换逻辑,调整或移除该部分,恢复默认的JSON解析行为。
内容的提问来源于stack exchange,提问作者user3763278
相关产品推荐
相关产品推荐

