使用Jquery从多维JSON数组中获取变量

时间:2014-06-28 19:51:30

标签: javascript jquery json

我正在使用JQUERY检索多维JSON数组。

我需要从数组中打印出各种项目,但我很难弄清楚如何通过数组并获取这些项目,以便我可以将它们插入到HTML中。

这是一个数组示例(这是从下面引用的jsonpage.php中获取的。

{
   "count":1,
   "total_count":1,
   "contacts":[
      {
         "id":92840643,
         "user_id":55536,
         "first_name":"John",
         "last_name":"Doe",
         "full_name":"John  Doe",
         "initials":"JD",
         "title":null,
         "company":null,
         "email":"john@doe.com",
         "avatar":"https://graph.facebook.com/123454/picture?type=large",
         "avatar_url":"https://graph.facebook.com/123454/picture?type=large",
         "last_contacted":null,
         "visible":true,
         "twitter":null,
         "facebook_url":null,
         "linkedin_url":null,
         "first_contacted":null,
         "created_at":"2014-05-26T19:06:55Z",
         "updated_at":"2014-05-26T19:12:42Z",
         "hits":0,
         "user_bucket_id":486405,
         "team_parent_id":null,
         "snoozed_at":null,
         "snooze_days":null,
         "groupings":[
            {
               "id":21554286,
               "type":"Grouping::Location",
               "name":"Johnson, NY",
               "stub":"frisco tx",
               "bucket_id":null,
               "user_id":55536,
               "domain_id":null,
               "editable":null,
               "conversable":null,
               "locked":null,
               "derived_from_id":null
            },
            {
               "id":21553660,
               "type":"Grouping::Bucket",
               "name":"Top Customers",
               "stub":"top customers",
               "bucket_id":486405,
               "user_id":55536,
               "domain_id":null,
               "editable":null,
               "conversable":null,
               "locked":null,
               "derived_from_id":null,
               "has_followups":true,
               "num_days_to_followup":30,
               "program_id":null
            }
         ],
         "email_addresses":[
            "john@doe.com"
         ],
         "tags":[

         ],
         "contact_status":3,
         "team_last_contacted":null,
         "team_last_contacted_by":null,
         "phone_numbers":[

         ],
         "addresses":[
            {
               "_id":"538390cfcc0fb067d8000353",
               "created_at":"2014-05-26T19:06:55Z",
               "deleted_at":null,
               "extra_data":{
                  "address_city":"Johnson",
                  "address_state":"NY",
                  "address_country":"United States"
               },
               "label":"Address",
               "primary":null,
               "remote_id":null,
               "updated_at":"2014-05-26T19:06:55Z",
               "username":null,
               "value":"Johnson, NY\nUnited States"
            }
         ],
         "social_profiles":[

         ],
         "websites":[

         ],
         "custom_fields":[
            {
               "_id":"538390cfcc0fb067d8000354",
               "custom_field_id":46639,
               "deleted_at":null,
               "label":"WeeklyNews",
               "value":"YES"
            },
            {
               "_id":"538390cfcc0fb067d8000355",
               "custom_field_id":46640,
               "deleted_at":null,
               "label":"Current Credits",
               "value":"142"
            },
            {
               "_id":"538390cfcc0fb067d8000356",
               "custom_field_id":46641,
               "deleted_at":null,
               "label":"Total Purchased Amount",
               "value":"400"
            },
            {
               "_id":"538390cfcc0fb067d8000357",
               "custom_field_id":46642,
               "deleted_at":null,
               "label":"VDownloads",
               "value":"112"
            },
            {
               "_id":"538390cfcc0fb067d8000358",
               "custom_field_id":46643,
               "deleted_at":null,
               "label":"AEDownloads",
               "value":"9"
            },
            {
               "_id":"538390cfcc0fb067d8000359",
               "custom_field_id":46644,
               "deleted_at":null,
               "label":"ADownloads",
               "value":"53"
            },
            {
               "_id":"538390cfcc0fb067d800035a",
               "custom_field_id":46638,
               "deleted_at":null,
               "label":"Last Login",
               "value":"2014-05-25 23:14:19"
            },
            {
               "_id":"538390cfcc0fb067d800035b",
               "custom_field_id":46649,
               "deleted_at":null,
               "label":"Label",
               "value":"Group1"
            }
         ]
      }
   ]
}

这是jquery成功代码:

 $.post('/jsonpage.php', post_data,  function(response) {



 });

现在,如果我发出警报(响应);在该职能范围内,即:

 $.post('/jsonpage.php', post_data,  function(response) {

 alert(response);
      });

然后,它确实'警告上面列出的整个JSON字符串。

但是,如果我这样说:

 $.post('/jsonpage.php', post_data,  function(response) {

 alert(response.count);
      });

然后,我在警告框中显示UNDEFINED。我尝试了一些不同的变量来警告'他们都回来了未定义。

感谢您的帮助!

克雷格

3 个答案:

答案 0 :(得分:1)

response.total_count
response.contacts[0].id
response.contacts[0].groupings[0].stub

等等。

答案 1 :(得分:1)

以下是在json响应中使用数据的一些方法。希望它有所帮助。

$.post('/jsonpage.php', post_data,  function(response) {

  if (!response.contacts || !response.contacts.length) {
    alert("Error loading that/those contact(s)");
    return;
  }

  for (var i=0, c; c = response.contacts[i]; i++) {
    // c is each contact, do stuff with c
    alert("That contact was created at " + c.created_at + " and last updated at " + c.updated_at);

    var cities = [];

    for (var j=0, a; a = c.addresses[j]; j++) {
      // a refers to each address
      cities.push(a.extra_data.address_city);
    }
    alert(c.full_name + " lives in " + cities.join(" and ") + ".");

    for (var j=0, cf; cf = c.custom_fields[j]; j++) {
      // cf is each custom_field
      // build a form or something
      // element label is cf.label
      // element value is currently cf.value
      var p = document.createElement("p");
      p.appendChild(document.createTextNode(cf.label));

      var el = document.createElement("input");
      el.type = "text";
      el.value = cf.value;

      p.appendChild(el);

      document.getElementById("someForm").appendChild(p);

    }

  }

});

答案 2 :(得分:0)

试试这个

var data = { "count": 1, "total_count": 1, "contacts": [{ "id": 92840643, "user_id": 55536, "first_name": "John", "last_name": "Doe", "full_name": "John  Doe", "initials": "JD", "title": null, "company": null, "email": "john@doe.com", "avatar": "https://graph.facebook.com/123454/picture?type=large", "avatar_url": "https://graph.facebook.com/123454/picture?type=large", "last_contacted": null, "visible": true, "twitter": null, "facebook_url": null, "linkedin_url": null, "first_contacted": null, "created_at": "2014-05-26T19:06:55Z", "updated_at": "2014-05-26T19:12:42Z", "hits": 0, "user_bucket_id": 486405, "team_parent_id": null, "snoozed_at": null, "snooze_days": null, "groupings": [{ "id": 21554286, "type": "Grouping::Location", "name": "Johnson, NY", "stub": "frisco tx", "bucket_id": null, "user_id": 55536, "domain_id": null, "editable": null, "conversable": null, "locked": null, "derived_from_id": null }, { "id": 21553660, "type": "Grouping::Bucket", "name": "Top Customers", "stub": "top customers", "bucket_id": 486405, "user_id": 55536, "domain_id": null, "editable": null, "conversable": null, "locked": null, "derived_from_id": null, "has_followups": true, "num_days_to_followup": 30, "program_id": null}], "email_addresses": ["john@doe.com"], "tags": [], "contact_status": 3, "team_last_contacted": null, "team_last_contacted_by": null, "phone_numbers": [], "addresses": [{ "_id": "538390cfcc0fb067d8000353", "created_at": "2014-05-26T19:06:55Z", "deleted_at": null, "extra_data": { "address_city": "Johnson", "address_state": "NY", "address_country": "United States" }, "label": "Address", "primary": null, "remote_id": null, "updated_at": "2014-05-26T19:06:55Z", "username": null, "value": "Johnson, NY\nUnited States"}], "social_profiles": [], "websites": [], "custom_fields": [{ "_id": "538390cfcc0fb067d8000354", "custom_field_id": 46639, "deleted_at": null, "label": "WeeklyNews", "value": "YES" }, { "_id": "538390cfcc0fb067d8000355", "custom_field_id": 46640, "deleted_at": null, "label": "Current Credits", "value": "142" }, { "_id": "538390cfcc0fb067d8000356", "custom_field_id": 46641, "deleted_at": null, "label": "Total Purchased Amount", "value": "400" }, { "_id": "538390cfcc0fb067d8000357", "custom_field_id": 46642, "deleted_at": null, "label": "VDownloads", "value": "112" }, { "_id": "538390cfcc0fb067d8000358", "custom_field_id": 46643, "deleted_at": null, "label": "AEDownloads", "value": "9" }, { "_id": "538390cfcc0fb067d8000359", "custom_field_id": 46644, "deleted_at": null, "label": "ADownloads", "value": "53" }, { "_id": "538390cfcc0fb067d800035a", "custom_field_id": 46638, "deleted_at": null, "label": "Last Login", "value": "2014-05-25 23:14:19" }, { "_id": "538390cfcc0fb067d800035b", "custom_field_id": 46649, "deleted_at": null, "label": "Label", "value": "Group1"}]}] };
    alert(data["contacts"][0]["id"]);

//get count
alert(data["count"]); //1
//get first contacts data
data["contacts"][0]["id"] //retruns 92840643
//do same for others to get data