无法从服务器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
相关产品推荐
相关产品推荐

