【问题标题】:How to parse this type of string using javascript or jquery?如何使用 javascript 或 jquery 解析这种类型的字符串?
【发布时间】:2012-10-13 07:01:00
【问题描述】:

大家好,我想解析这种类型的字符串:

    {"1":
    [
        {"OrderItemId":832,"ItemId":995,"Price":0},
        {"OrderItemId":833,"ItemId":997,"Price":0},
        {"OrderItemId":834,"ItemId":999,"Price":0}
    ],
    "2":
    [
        {"OrderItemId":835,"ItemId":1008,"Price":0},
        {"OrderItemId":836,"ItemId":1057,"Price":0}
    ]
}

这对我很重要,所以请大家帮帮我。

【问题讨论】:

    标签: javascript jquery json parsing


    【解决方案1】:

    这样,如果你想访问 OrderItemId

    var test =  {"1":
        [
            {"OrderItemId":832,"ItemId":995,"Price":0},
            {"OrderItemId":833,"ItemId":997,"Price":0},
            {"OrderItemId":834,"ItemId":999,"Price":0}
        ],
        "2":
        [
            {"OrderItemId":835,"ItemId":1008,"Price":0},
            {"OrderItemId":836,"ItemId":1057,"Price":0}
        ]
    }
    
    alert(test["1"][0]['OrderItemId']);
    alert(test["1"][1]['OrderItemId']);
    alert(test["1"][2]['OrderItemId']);
    
    alert(test["2"][0]['OrderItemId']);
    alert(test["2"][1]['OrderItemId']);
    

    更新,以未知长度迭代槽测试

    for (var i=0;i<test["1"].length;i++) {
        alert(test["1"][i]['OrderItemId']);
    }
    

    这里是全自动枚举

    var number, count = 0;
    var en = [];
    for(number in test) {
        en[count]=number;
        count++;
    }
    for (var r=0;r<en.length;r++) {
        alert(en[r]);
        for (var i=0;i<test[en[r]].length;i++) {
            alert(test[en[r]][i]['OrderItemId']);
        }
    }
    

    【讨论】:

    • 酷。但是当我不知道长度时我该怎么做?我的意思是说,我怎样才能动态地做到这一点..?
    • 我仍然必须将 test["1"] 设为静态。我不想给“1”作为静态。我想为任意数量的数组解析它..
    • 嘿,我不完全满意。请给我解决方案,以便我可以将您的答案标记为已接受。
    • 又进行了一次更新,最后一次 - 现在应该很清楚了 :-)
    • 得到了我想要的确切答案。谢谢一吨。 :)
    【解决方案2】:

    如果每个对象项结束后,无需添加反斜杠。只能用逗号分隔。

    【讨论】:

      【解决方案3】:

      //你也可以这样做:

      <script>
          var employees = { "accounting" : [   // accounting is an array in employees.
                                          { "firstName" : "John",  // First element
                                            "lastName"  : "Doe",
                                            "age"       : 23 },
      
                                          { "firstName" : "Mary",  // Second Element
                                            "lastName"  : "Smith",
                                            "age"       : 32 }
                                        ], // End "accounting" array.                                  
                        "sales"       : [ // Sales is another array in employees.
                                          { "firstName" : "Sally", // First Element
                                            "lastName"  : "Green",
                                            "age"       : 27 },
      
                                          { "firstName" : "Jim",   // Second Element
                                            "lastName"  : "Galley",
                                            "age"       : 41 }
                                        ] // End "sales" Array.
                      } // End Employees
      
      
          var output="<ul>";
          for (var i in employees.accounting) {
              output+="<li>" + employees.accounting[i].firstName + " " + employees.accounting[i].lastName + "--" + employees.accounting[i].age+"</li>";
          }
          output+="</ul>";
      
          var output1="<ul>";
          for (var j in employees.sales) {
              output1+="<li>" + employees.sales[j].firstName + " " + employees.sales[j].lastName + "--" + employees.sales[j].age+"</li>";
          }
          output+="</ul>";
      
          alert(output1);
      
      </script>
      

      【讨论】:

      • 我希望解析本身采用“销售”或“会计”。任何想法..?
      • 因为可能有数百个名称,例如“销售”和“会计”。怎么办..?
      【解决方案4】:

      你可以使用jQuery to Parse JSON

      也看看这个 SO 问题Parse JSON in JavaScript?

      【讨论】:

        【解决方案5】:

        问题可能是由于行结束造成的。

        这是一个有效的[在 chrome 开发控制台中测试] 代码:

        var jsonStr = '{"1":\
            [\
                {"OrderItemId":832,"ItemId":995,"Price":0},\
                {"OrderItemId":833,"ItemId":997,"Price":0},\
                {"OrderItemId":834,"ItemId":999,"Price":0}\
            ],\
            "2":\
            [\
                {"OrderItemId":835,"ItemId":1008,"Price":0},\
                {"OrderItemId":836,"ItemId":1057,"Price":0}\
            ]\
        }';
        var obj = JSON.parse(jsonStr); // works!
        

        【讨论】:

        • 我已应用“\”作为行尾。
        【解决方案6】:

        这是JSON。使用this 解析它。 (或您喜欢的任何其他库,可能是 jQuery)

        【讨论】:

        • +1 表示简洁。您可能想提供 JSON.parse 代码示例。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-09
        • 2020-07-28
        • 1970-01-01
        相关资源
        最近更新 更多