多维JSON结构问题

Multidimensional JSON structure issue

本文关键字:问题 结构 JSON 多维      更新时间:2023-09-26

我有以下伪结构。

[
   {"product":
      {
        "id":"14",
        "product_title":"My Awesome Product!",
        "product_desc":"An awesome product.."
      }
   }, 
   {"product":
      {
        "id":"15",
        "product_title":"My MORE Awesome Product!",
        "product_desc":"An AWESOMER product..."
      }
   }
]

我是这样迭代的:

$.post('Ajax.php',function(res){
  res = res.pop();
  $.each(res,function(product){
    alert(product.product_title);
  });
});

但是,只显示了最后一个product_title。它并没有通过所有这些。是我的代码,还是我的JSON结构?谢谢

EDIT:.pop();的原因:读取jQuery JSON结构-无法使其工作

如果你想迭代,就不要弹出。。。

$.post('Ajax.php',function(res){
  $.each(res,function( index, value ){
   alert( value.product.product_title );
  });
});

此外,您的JSON结构有一些冗余,可以写成:

[
      {
        "id":"14",
        "product_title":"My Awesome Product!",
        "product_desc":"An awesome product.."
      },

      {
        "id":"15",
        "product_title":"My MORE Awesome Product!",
        "product_desc":"An AWESOMER product..."
      }
]

这意味着一系列的产品。您总是希望您的数组包含单一类型的内容。如果你想从服务器返回多个东西,这将是更合适的结构:

{  
    "products": [
      {
        "id":"14",
        "product_title":"My Awesome Product!",
        "product_desc":"An awesome product.."
      },

      {
        "id":"15",
        "product_title":"My MORE Awesome Product!",
        "product_desc":"An AWESOMER product..."
      }
    ],
    "kittens": [
      {
        "id":"14",
        "name":"kitty"
      },

      {
        "id":"15",
        "name": "kitty"
      }
    ]
}

一系列的产品和一系列的小猫,从来不是一系列产品和小猫。

您的res=res.pop((;行将res设置为res数组的最后一个元素。如果你去掉那条线,它应该会像你期望的那样工作。

$.post('Ajax.php', function(res) {
  for (var i = 0, j = res.length; i < j; i++) {
    console.log(res[i].product.product_title);
  }
});

试试这个,它应该显示2个产品标题。JSON结构很好。

我的建议是使用简单的JavaScript迭代(for循环(:

var temp = 
[
   {"product":
      {
        "id":"14",
        "product_title":"My Awesome Product!",
        "product_desc":"An awesome product.."
      }
   }, 
   {"product":
      {
        "id":"15",
        "product_title":"My MORE Awesome Product!",
        "product_desc":"An AWESOMER product..."
      }
   }
]
for(var i = 0; i < temp.length; i++)
{
    console.log(temp[i].product.id);
}