2016-05-31 3 views
1

Я хочу сгенерировать данные с именем, положением, телефоном и электронной почтой из следующего json. Но я не понимаю, как получить доступ к имени и вложенному значению. Изменение json невозможно.jquery datatables вложенные значения json

JSON:

{ 
    "key1" : "somevalue", 
    "key2" : "somevalue2", 
    "contacts" : { 
    "John Doe" : { 
     "position" : "CEO", 
     "phone" : "1234-5678-0", 
     "email" : "[email protected]" 
    }, 
    "Elvis Presley" : { 
     "position" : "Singer", 
     "phone" : "0234-5678-0", 
     "email" : "[email protected]" 
    }, 
    "Albert Einstein" : { 
     "position" : "Thinker", 
     "phone" : "0000-8888-0", 
     "email" : "[email protected]" 
    } 
} 

РЕЗУЛЬТАТ:

+-----------------+----------+-------------+---------------------+ 
| NAME   | POSITION | PHONE  | EMAIL    | 
+-----------------+----------+-------------+---------------------+ 
| John Doe  | CEO  | 1234-5678-0 | [email protected] | 
+-----------------+----------+-------------+---------------------+ 
| Elvis Presley | Singer | 0234-5678-0 | [email protected] | 
+-----------------+----------+-------------+---------------------+ 
| Albert Einstein | Thinker | 0000-8888-0 | [email protected] | 
+-----------------+----------+-------------+---------------------+ 
+0

Если это IS JSON, это строка, как вы ее разбираете? Если это просто объект JavaScript, то это другое. Просьба уточнить. –

ответ

1

Вы можете управлять данными, используя ajax.dataSrc вариант.

Например:

var table = $('#example').DataTable({ 
    ajax: {  
     url: 'https://api.myjson.com/bins/4nnmy', 
     dataSrc: function(json){ 
      var data = []; 
      for(var contact_name in json.contacts){ 
      var contact = json.contacts[contact_name]; 
      data.push([ 
       contact_name, 
       contact['position'], 
       contact['phone'], 
       contact['email'] 
      ]);     
      } 

      return data; 
     } 
    } 
}); 

См this jsFiddle для кода и демонстрации.

+0

отлично, спасибо! – MDeuerlein

0

Если у вас есть данные переменной с именем, то вы можете получить доступ к data.contacts, а оттуда вы можете сделать это:

for(var contact in data.contacts) { 
    if(data.contacts.hasOwnProperty(contact)) { 
     // Do whatever with data.contacts[contact].position 
     // Do whatever with data.contacts[contact].phone 
     // Do whatever with data.contacts[contact].email 
    } 
} 
0

Пример: https://jsfiddle.net/9aLvd3uw/204/

Html:

<table> 
<thead> 
    <tr> 
    <th>NAME</th> 
    <th>POSITION</th> 
    <th>PHONE</th> 
    <th>EMAIL</th> 
    </tr> 
</thead> 
<tbody id="myTbody"> 

</tbody> 
</table> 

ЯШ:

var data = { 
    "key1" : "somevalue", 
    "key2" : "somevalue2", 
    "contacts" : { 
    "John Doe" : { 
     "position" : "CEO", 
     "phone" : "1234-5678-0", 
     "email" : "[email protected]" 
    }, 
    "Elvis Presley" : { 
     "position" : "Singer", 
     "phone" : "0234-5678-0", 
     "email" : "[email protected]" 
    }, 
    "Albert Einstein" : { 
     "position" : "Thinker", 
     "phone" : "0000-8888-0", 
     "email" : "[email protected]" 
    } 
}}; 
var contacts = data.contacts; 
var string = ''; 
for (name in contacts){ 
string += '<tr><td>' +name + '</td><td>' + contacts[name].position + '</td><td>' + contacts[name].phone + '</td><td>' + contacts[name].email + '</td></tr>' ; 
} 
$("#myTbody").html(string); 
+0

Спасибо, но это не решение для jQuery datatables. см. http://datatables.net – MDeuerlein

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