嗨,我已经能够从文件中解析出我需要的大多数值,但是现在无法从下面的嵌套数组中的localizedSize中提取所有值:
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body);
for (var i = 0; i < info.objects.length; i++) {
var counter = info.objects[i];
var kickURL = counter.publishedContent.properties.coverCard.properties.portraitURL;
var kickTitle = counter.productInfo[0].productContent.fullTitle;
var kickDescription = counter.productInfo[0].productContent.description;
var kickPrice = counter.productInfo[0].merchPrice.fullPrice;
var kickSizes = counter.productInfo[0].skus;
for(var j = 0; j < kickSizes.length; j++)
{
var sizes = counter.productInfo[0].skus[j].countrySpecifications;
}
console.log(sizes);
}
上面的代码只是输出:
[ { country: 'GB',
localizedSize: '6 (EU 40)',
localizedSizePrefix: 'UK',
taxInfo: { vat: 20 } } ]
寻找是否可以获取localizedSize中的所有值,而不仅仅是第一个值。
答案 0 :(得分:0)
请参见代码中的“ 0”,它们只会获取数组中的第一项
var kickDescription = counter.productInfo[0].productContent.description;
var kickPrice = counter.productInfo[0].merchPrice.fullPrice;
var kickSizes =
counter.productInfo[0].skus[0].countrySpecifications[0].localizedSize;
这就是您仅获得第一尺寸的原因。 您可以像前面在代码
中那样,使用lenght属性在for循环中循环数组的每个项目。for (var i = 0; i < info.objects.length; i++) {
//.....
}
否则,我建议您在通过大型JSON进行解析时对数组使用for-of循环,对对象使用for-in。
尝试下面的算法仅复制您的代码(它可能无法完全发挥作用,因为主要是我不知道用例,其次是提供的JSON是部分的)
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body);
for(let counter of info.objects) {
var kickURL = counter.publishedContent.properties.coverCard.properties.portraitURL;
//console.log(kickURL);
for(let prodInf of counter.productInfo){
var kickTitle = prodInf.productContent.fullTitle;
var kickDescription = prodInf.productContent.description;
var kickPrice = prodInf.merchPrice.fullPrice;
//console.log(kickURL,kickTitle);
for(let sk of prodInf.skus){
for(let conSpec of sk.countrySpecifications){
var kickSizes = conSpec.localizedSize;
//console.log(kickSizes);
// if you want all the sizes in an array you can individually keep pushing each of the value to an empty array here or do whatever you like .
}
}
}
}