如何遍历这个json对象(不使用jquery)[重复]
Posted
技术标签:
【中文标题】如何遍历这个json对象(不使用jquery)[重复]【英文标题】:how iterate through this json object (not with jquery) [duplicate] 【发布时间】:2014-07-19 01:57:20 【问题描述】:我想遍历从var jsonObj json_encode( <?php echo $php_array ?>);
获得的 json 对象。在我看来,这与大多数人所拥有的格式不同。例如,w3schools 将其显示为 json 对象:
"employees": [
"firstName":"John" , "lastName":"Doe" ,
"firstName":"Anna" , "lastName":"Smith" ,
"firstName":"Peter" , "lastName":"Jones"
]
我的似乎有完整的结构:
"PINEFOREST JEWELRY":
["3034.25","2002-01-02"],
"AMBERS DESIGN":
["2034.75","2002-01-02"],
"ELEGANT JEWELERS":
["206","2002-01-02"],
"SALEM'S JEWELERS":
["406","2002-01-02"]
我可以遍历这个吗?
【问题讨论】:
看到这个答案:***.com/questions/23310353/… 【参考方案1】:您可以使用 for 循环来遍历对象的直接属性,如下所示:
var val;
for(var key in obj)
if(obj.hasOwnProperty(key))
val = obj[key];
console.log(val);
【讨论】:
因为它是 JSON,在这种情况下没有必要使用hasOwnProperty
。【参考方案2】:
您可以将for in
与嵌套的for
一起使用
for (var key in data)
for (var i = 0; i < data[key].length; i++)
console.log(data[key][i]);
【讨论】:
这让我得到了数字,我如何也得到名字? 名称存储在key
变量@bsapaka
Document.write(sales_new_accounts[key][i]
只给我数字,Document.write(sales_new_accounts[key]
给我未定义
@bsapaka -- 你必须在循环内使用它 -- key
在循环外什么都不是
是的,我确实在 for 循环中使用了它【参考方案3】:
是的,您可以遍历它,因为它是有效的 json。
首先,您需要将 json 转换为 javascript 可以迭代的内容,您可以使用 JSON.parse()
(MDN) 来完成。我假设你上面描述的'json'是一个'json'字符串,所以:
var jewellery = JSON.parse(myJson); // replace myJson with whatever variable is holding your json
此时您有一个object
,您可以对其进行迭代。最简单的方法之一是使用 Object.keys()
(MDN) 和 Array.forEach()
(MDN),如下所示:
Object.keys(jewellery).forEach(function (key)
console.log(key); // would log 'PINEFOREST JEWELRY' the first time
jewellery[key].forEach(function (price)
console.log(price); // Should log '3034.25' the first time
);
试一试,否则您仍然可以使用其他人提交的其他解决方案,或者可以使用。这就是我的做法!!
【讨论】:
小心 forEach 函数,因为某些浏览器不支持它,例如 IE8 (caniuse.com/#search=forEach) 这可能是一个问题,是的,这就是为什么我说试一试,如果它不起作用,那么使用人们提交的其他解决方案:)以上是关于如何遍历这个json对象(不使用jquery)[重复]的主要内容,如果未能解决你的问题,请参考以下文章