如何使用jquery解析read json元素

时间:2014-07-31 18:17:59

标签: javascript jquery json

我必须在我的移动应用程序中创建购物车系统,我想存储id和产品数量,id应该是我的数组的关键(用于修改产品数量),尝试使用对象而不是数组但是我得到错误:当我尝试读取我的json变量时,undefined不是函数

通过JSON.stringify(购物车)

我的购物车代码是这样的

var cart = [];
var produit = {}; 
produit['qte'] = $('.'+id_prd).text();
produit['id_produit'] = id_prd;
cart[id_prd] = produit;
window.sessionStorage["cart1"]= JSON.stringify(cart);

回复我

{"7":{"qte":"1","id_produit":7},"8":{"qte":"1","id_produit":8}}

当我尝试使用

解析json字符串时
 var parsed = $.parseJSON(window.sessionStorage["cart1"]);

我收到错误'undefined is not a function' 在试图用

读取json时
 var i=0;
  for (k in parsed) {
    var k_data = parsed[k];
    k_data.forEach(function(entry) {                              



    alert(entry);

    ch+=entry.id_produit;
    if(i<parsed.length-1)
     ch+= ',';
    if(i==parsed.length-1)
        ch+=')';
    i++;
 });
 }

你能否澄清错误原因,以及是否有解决方案可以更好地阅读json

3 个答案:

答案 0 :(得分:1)

问题是你正在使用k_data.forEach(function(entry)但是每个用于数组,而k_data只是一个简单的javascript对象。

尝试更改:

k_data.forEach(function(entry){

到此:

$(k_data).each(function(entry){

更重要的是,如果JSON始终与您发布的结构相同,我认为每个功能都不是必需的,也许这就是您要寻找的方式:

var i=0;
var ch = "(";
for (k in parsed) {
    var k_data = parsed[k];                         

    alert(k_data);

    ch+=k_data.id_produit;
    ch+= ',';
    i++;
}
ch = ch.substring(0, ch.length - 1) + ")";

答案 1 :(得分:0)

您可以尝试这样的事情:

<script type="text/javascript">
     var finalArr = new Array();
     var dataArr = new Array();
     dataArr  = window.sessionStorage["cart1"];
     if (JSON.parse(dataArr).length > 0) {
            for (var i = 0; i < JSON.parse(dataArr).length; i++) {
                finalArr.push((JSON.parse(dataArr))[i]);
            }
     }
</script>

答案 2 :(得分:0)

你不应该为此需要jQuery。您用于stringify的相同JSON对象具有解析函数:

var parsed = JSON.parse(window.sessionStorage["cart1"]);

如果仍然存在,那么另一个未定义的对象可能出现问题。