使用jQuery从JSON字符串中提取值/ s

时间:2011-07-15 11:13:36

标签: jquery json

我有这段代码试图从下面的JSON字符串中提取第一个(或两个)“ZoneId”值:

var obj = jQuery.parseJSON('{"SecureZoneSubscriptionList": {"EntityId": 8628428,"Subscriptions": [{"ZoneName": "Customer Secure Zone","ZoneId": "51",},{"ZoneName": "Wholesaler Secure Zone","ZoneId": "3573",},]}}');
alert(obj.SecureZoneSubscriptionList[0].ZoneId);

我已经查看了其他类似版本的代码,这些代码完全正确并且正常工作,但是当我将它应用到我的情况时却无法工作? 很想知道我做错了什么(这是我第一次使用JSON,还是jQuery的新手)...会感激任何帮助。 感谢。

4 个答案:

答案 0 :(得分:2)

这是你的答案:

 var obj = {
     "SecureZoneSubscriptionList": {
         "EntityId": 8628428,
         "Subscriptions": [{
             "ZoneName": "Customer Secure Zone",
             "ZoneId": "51",
             },
         {
             "ZoneName": "Wholesaler Secure Zone",
             "ZoneId": "3573",
             }, ]
     }
 };

 alert(obj.SecureZoneSubscriptionList.Subscriptions[0].ZoneId);

请注意,“订阅”是您的数组所在的位置...而不是SecureZoneSubscriptionList

编辑问题家伙问另一个问题:

  var obj = {
      "SecureZoneSubscriptionList": {
      "EntityId": 8628428,
           "Subscriptions": [{
                "ZoneName": "Customer Secure Zone",
                "ZoneId": "51",
           } ]
      }
 };

 alert(obj.SecureZoneSubscriptionList.Subscriptions[0].ZoneId);

这仍适用于1个元素。

 alert(obj.SecureZoneSubscriptionList.Subscriptions.length);

以上将告诉您元素的长度。你可以对if / else if / else做一些条件语句来处理它......

答案 1 :(得分:1)

假设它不是拼写错误,你的JSON无效(你有很多逗号不应该在那里)。 jsonlint.com是你的朋友,我建议你在遇到这样的问题时使用它。

{
    "SecureZoneSubscriptionList": {
        "EntityId": 8628428,
        "Subscriptions": [
            {
                "ZoneName": "Customer Secure Zone",
                "ZoneId": "51",

            },
            {
                "ZoneName": "Wholesaler Secure Zone",
                "ZoneId": "3573",

            },

        ]
    }
}

正确:

{
    "SecureZoneSubscriptionList": {
        "EntityId": 8628428,
        "Subscriptions": [
            {
                "ZoneName": "Customer Secure Zone",
                "ZoneId": "51"
            },
            {
                "ZoneName": "Wholesaler Secure Zone",
                "ZoneId": "3573"
            }
        ]
    }
}

答案 2 :(得分:1)

你有几个额外的逗号,JSON规范不支持额外的逗号。例如:"ZoneId": "3573",},]}(在括号和括号之前)。只要剩下那些,你就会遇到困难。

答案 3 :(得分:0)

  1. 你在某个地方的JavaScript字符串中有语法错误,我会假设它是一些糟糕的复制粘贴。

  2. 鉴于此限制,您需要寻找obj.SecureZoneSubscriptionList.Subscriptions[0].ZoneId - 请注意.Subscriptions