【问题标题】:How to parse read json elements with jquery如何使用 jquery 解析读取的 json 元素
【发布时间】:2014-07-31 18:17:59
【问题描述】:

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

通过 JSON.stringify(cart)

我的购物车代码是这样的

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"]);

我收到错误“未定义不是函数” 尝试使用

读取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的解决方案

【问题讨论】:

  • JSON.parse(jsonString)
  • 去掉id_produit前面的双引号
  • 这是一个错字,我将编辑我的问题
  • “parse”和“parse1”是同一个变量吗?
  • @chepe263 是的,这也是一个错字,我真的很困惑

标签: javascript jquery json


【解决方案1】:

问题是您使用的是k_data.forEach(function(entry),但 forEach 用于数组,而 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) + ")";

【讨论】:

  • 谢谢你,这就是我要找的东西
【解决方案2】:

你不应该为此需要 jQuery。您用于字符串化的同一个 JSON 对象有一个解析函数:

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

如果仍然中断,则可能是另一个未定义的对象有问题。

【讨论】:

    【解决方案3】:

    你可以试试这样的:

    <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>
    

    【讨论】:

    • 我得到这个对象 {7: Object, 8: Object} 7: Object 8: Object proto: Object
    • 可以告诉任何 1 电话,你为什么拒绝我的回答?怎么没用?
    猜你喜欢
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    相关资源
    最近更新 更多