Javascript 如何使用动态表处理嵌套的JSON文件?
我目前正在尝试加载BLAST数据(来自一个很酷的生物实验),并使用。我不熟悉JSON和Javascript,但我想我已经开始使用了。问题是JSON“对象”中有一个嵌套实例,我无法将其加载到动态表中 这是JSON的一个片段Javascript 如何使用动态表处理嵌套的JSON文件?,javascript,jquery,json,dynatable,Javascript,Jquery,Json,Dynatable,我目前正在尝试加载BLAST数据(来自一个很酷的生物实验),并使用。我不熟悉JSON和Javascript,但我想我已经开始使用了。问题是JSON“对象”中有一个嵌套实例,我无法将其加载到动态表中 这是JSON的一个片段 [{ "Hit_num": "1", "Hit_id": "gi|495426285|ref|WP_008150982.1|", "Hit_accession": "WP_008150982",
[{
"Hit_num": "1",
"Hit_id": "gi|495426285|ref|WP_008150982.1|",
"Hit_accession": "WP_008150982",
"Hit_hsps": {
"Hsp": {
"Hsp_num": "1",
"Hsp_bit-score": "202.986",
"Hsp_score": "515",
"Hsp_evalue": "1.7033e-61"
}
}
}, {
"Hit_num": "2",
"Hit_id": "gi|495936315|ref|WP_008660894.1|",
"Hit_accession": "WP_008660894",
"Hit_hsps": {
"Hsp": {
"Hsp_num": "1",
"Hsp_bit-score": "196.052",
"Hsp_score": "497",
"Hsp_evalue": "8.4357e-59"
}
}
}, {
"Hit_num": "3",
"Hit_id": "gi|495936314|ref|WP_008660893.1|",
"Hit_accession": "WP_008660893",
"Hit_hsps": {
"Hsp": {
"Hsp_num": "1",
"Hsp_bit-score": "185.652",
"Hsp_score": "470",
"Hsp_evalue": "6.08306e-55"
}
}
}]
正如你所见,它有一个“热休克蛋白”和“热休克蛋白”嵌套在它。但是每个命中只有一个hit\u HsP/HsP实例
最好的方式是什么?展平JSON文件,还是有更巧妙的方法来处理Dynatable中的此类嵌套数据?
我正在使用此代码显示表格
$(document).ready(function () {
$.dynatableSetup({
table: {
defaultColumnIdStyle: 'trimDash' //Make it accept _ spaced headers
}
});
$('#remote').dynatable({
dataset: {
records: JSON.parse($('#blast').text()) //Parse
}
});
});
整个系列都可以在一个上找到,答案有点晚,但它看起来像是一个有趣的问题,所以这里是 以下各项— 我阅读了Dynatable上的内容,但对解析非典型JSON文件不是很清楚 所以…我是白手起家的 基本表是HTML格式的,表中的行被附加到正文中。我只使用了两个JSON变量集,但您可以轻松地计算数组中变量集的数量,然后循环到该数量 我了解到,动态创建的表不太容易设置样式,因此HTML和javascript的结合非常困难 如果您能够弄清楚如何将单个数据元素放入Dynatable,您可以看到我是如何解析它的(这相当简单) 相关JS
for(var n=0; n<2; n++)
{
var one = myarray[n].Hit_num;
var two = myarray[n].Hit_id;
var three = myarray[n].Hit_accession;
var four = myarray[n].Hit_hsps.Hsp.Hsp_num;
var five = myarray[n].Hit_hsps.Hsp.Hsp_bit_score;
var six = myarray[n].Hit_hsps.Hsp.Hsp_score;
var seven = myarray[n].Hit_hsps.Hsp.Hsp_evalue;
fillrow(one, two, three, four, five, six, seven);
}
function fillrow(one, two, three, four, five, six, seven)
{
$('tbody').append("<tr><td style='width:50px'>" + one +
"</td><td>" + two +
"</td><td>" + three +
"</td><td>" + four +
"</td><td>" + five +
"</td><td>" + six +
"</td><td>" + seven +
"</td></tr>");
}
for(var n=0;n