2016-05-31 110 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> 

JS:

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數據表的解決方案。看完http://datatables.net – MDeuerlein