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

无法从服务器JSON响应中获取数组值,寻求技术支持

问题描述

服务器返回的JSON响应如下:

{"filters":{
  "Facture": [
    "Магма (Тычок)",
    "Тонкий кирпич",
    "Гладкий",
    "Крафт",
    "Магма"
  ],
  "Color": [
    "Беж",
    "Черный",
    "Амстердам",
    "Лондон Брик",
    "Мюнхен",
    "Сити Брик"
  ],
  "Name": [
    "Облицованный кирпич стандартный пустотелый",
    "Тонкий колотый с ф. 180/11"
  ]
}}

使用以下代码尝试访问数组时,控制台返回undefined:

console.log(xhr.responseText);

const response = xhr.responseText;
console.log(response);

const myObj = JSON.parse(response);
console.log(myObj);

var names = myObj.Name.map(name => name.trim());
var types = myObj.Facture.map(type => type.trim());
var colors = myObj.Color.map(color => color.trim());

console.log(names);
console.log(types);
console.log(colors);

本地直接创建相同对象时可正常访问,但通过服务器响应解析后无法取值,尝试修改服务器返回数据、调整代码均未解决。

解决方案

问题出在访问路径错误:服务器返回的JSON结构中,Facture、Color、Name这三个数组都嵌套在filters对象内部,直接通过myObj.Name访问相当于在根对象里查找不存在的Name属性,自然会得到undefined。

修正后的代码如下:

console.log(xhr.responseText);

const response = xhr.responseText;
console.log(response);

const myObj = JSON.parse(response);
console.log(myObj);

// 先访问filters子对象,再获取对应数组
var names = myObj.filters.Name.map(name => name.trim());
var types = myObj.filters.Facture.map(type => type.trim());
var colors = myObj.filters.Color.map(color => color.trim());

console.log(names);
console.log(types);
console.log(colors);

可以先通过console.log(myObj.filters)确认该子对象是否存在,再访问内部数组,即可正常获取对应的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 00:47:18