2013-12-10 3 views
0

Это мой выход JSON:Чтение вывода JSON в JavaScript с большим количеством объектов

[ 
    { 
    "Business": [ 
     { 
     "id": "5739" 
     }, 
     { 
     "userid": "" 
     }, 
     { 
     "name": "Ben Electric" 
     }, 
     { 
     "description": "" 
     }, 
     { 
     "address": "" 
     }, 
     { 
     "email": "*****@gmail.com" 
     }, 
     { 
     "phone2": "050*****88" 
     }, 
     { 
     "phone3": "" 
     }, 
     { 
     "mobile": "050****88" 
     }, 
     { 
     "opentimes": "" 
     }, 
     { 
     "services": "" 
     }, 
     { 
     "places": "" 
     }, 
     { 
     "logo": null 
     }, 
     { 
     "image": null 
     }, 
     { 
     "video": "" 
     }, 
     { 
     "owner_name": "Ben Brant" 
     }, 
     { 
     "owners": "1" 
     }, 
     { 
     "userpic": "http://graph.facebook.com/****/picture" 
     }, 
     { 
     "circle": "3" 
     }, 
     { 
     "fc": "0" 
     }, 
     { 
     "rating_friends": "" 
     }, 
     { 
     "rating_global": "3.3333" 
     }, 
     { 
     "advice": "" 
     }, 
     { 
     "subscription": "none" 
     } 
    ] 
    }, 
    { 
    "Business": [ 
     { 
     "id": "5850" 
     }, 
     { 
     "userid": "" 
     }, 
     { 
     "name": "Bla Bla" 
     }, 
     { 
     "description": "" 
     }, 
     { 
     "address": "" 
     }, 
     { 
     "email": "*****@gmail.com" 
     }, 
     { 
     "phone2": "" 
     }, 
     { 
     "phone3": "" 
     }, 
     { 
     "mobile": "0*****995" 
     }, 
     { 
     "opentimes": "" 
     }, 
     { 
     "services": "" 
     }, 
     { 
     "places": "" 
     }, 
     { 
     "logo": null 
     }, 
     { 
     "image": null 
     }, 
     { 
     "video": "" 
     }, 
     { 
     "owner_name": "Ben VBlooo" 
     }, 
     { 
     "owners": "1" 
     }, 
     { 
     "userpic": "http://graph.facebook.com/******/picture" 
     }, 
     { 
     "circle": "3" 
     }, 
     { 
     "fc": "0" 
     }, 
     { 
     "rating_friends": "" 
     }, 
     { 
     "rating_global": "2.0000" 
     }, 
     { 
     "advice": "" 
     }, 
     { 
     "subscription": "none" 
     } 
    ] 
    }, 
    { 
    "Info": { 
     "message": "No user for the business" 
    } 
    }, 
    { 
    "OK": { 
     "message": "By Circle" 
    } 
    } 
] 

Я пытаюсь получить объекты в JavaScript таким образом, но он не работает, я должен цикл по каждому Бизнес-объект ?? есть ли способ прямого доступа к реальным объектам данных?

Вот что я хочу:

$.ajax({ 
    type: 'POST', 
    url: 'BLABLA', 
    data: { BLABLA }, 
    dataType: 'json', 
    success: function(resp) { 
     if(resp.length == 0) { 
     $('.searchol').append('<li>No results found.</li>'); 
      return; 
     } 
     $.each(resp, function(index, element) { 
     $('.searchol').append('Users Picture: '+element.Business.userpic); 

Но я не могу показаться, чтобы добраться до объекта?

+0

Что с того, что данные в формате JSON? Почему все поля в своих объектах хранятся в массиве? – sbking

+0

Thats большой вопрос, вот что я говорил тоже !! но босс дал мне работу, поэтому ...:/ –

ответ

0

Я просто попробовал этот код, используя ваш пример JSON, как этот

$.each(resp, function(index,element){ 
    $.each(element, function(ind,ele){ 
    if(ele.length){ 
     $.each(ele,function(ind,ele){ 
      if(ele.userpic) 
      console.log(ele.userpic) 
     }) 
    } 
    }) 
}) 
+0

Вы можете свести к минимуму код, чтобы получить userpic, если вы получите более полное представление о том, как структурирован ваш объект json –

0

«Бизнес» относится к массиву (квадратная скобка), поэтому элемент.Business.userpic не существует (элемент.Business [0] .userpic существует, хотя). В зависимости от того, что вы хотите достичь, вам придется либо пройти через Бизнес, либо получить доступ к пользовательскому элементу определенного элемента массива.

0

Ваш бизнес-объект представляет собой массив объектов

"Business": [ 
    { 
    "id": "5850" 
    }, 

Проверить это JSFiddle script как читать этот вывод Sample

Picture: undefined (index):192 
Picture: http://graph.facebook.com/****/picture 
0

Это поможет вам

$.each(resp, function(index, element) { 
     $('.searchol').append('Users Picture: '+element.Business["userpic"]); 
0

Ваш JSON странный. Вместо того, чтобы:

Business : [ 
    { id : 'id1' } 
    { name : 'name1' } 
] 


Business[0].id // access id 
Business[1].name // access name 

Где вы должны помнить, где каждый атрибут в массиве (или цикл по массиву, чтобы найти его), вы должны иметь:

Business : { 
    id : 'id1', 
    name : 'name1' 
} 

Business.id // access id 
Business.name // access name 

Если вы можете «т изменить JSON, вы можете использовать следующие 2 методы, чтобы быстро получить свойство бизнеса:

var propMap = { 
    id : 0, 
    userid : 1, 
    name : 2 // etc 
} 

function getBusinessProp(business, prop) { 
    return business[propMap[prop]][prop]; 
} 

// usage : 
$('.searchol').append('Users Picture: '+ getBusinessProp(element.Business, 'userpic')); 

Если ваш массив может отсутствовать некоторые я стем или элементы могут быть в для каждого бизнеса в другом порядке, то вам нужно перебирать, чтобы найти недвижимость вас интересует:

function getBusinessProp(business, prop) { 
    for (var i=0; i<business.length; i++) { 
    if (business[i].hasOwnProperty(prop)) { 
     return business[i][prop]; 
    } 
    } 
} 

// same usage, no need for the map anymore 

Второй метод, вероятно, лучше, потому что он не сломается, если вам изменить порядок массива или добавить новые элементы в массив и т. д., и повышение производительности, предоставляемое с помощью карты, вероятно, недостаточно для оправдания добавленной стоимости обслуживания.

Смежные вопросы