3

現在、(クールな生物学的実験から) BLAST データを読み込もうとしており、Dynatableを使用して表示しています。私は JSON と Javascript を初めて使用しますが、始めて実行したと思います。問題は、JSON「オブジェクト」にネストされたインスタンスがあり、それを Dynatable にロードできないことです。

これはJSONの抜粋です

[{
        "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_hsps" と "Hsp" がネストされています。しかし、すべてのヒットには Hit_hsps/HsP インスタンスが 1 つしかありません。

最善の方法は何ですか?JSON ファイルをフラット化しますか、それとも Dynatable でこの種のネストされたデータを処理するためのより独創的な方法はありますか?

このコードを使用してテーブルを表示しています

  $(document).ready(function () {
      $.dynatableSetup({
          table: {
              defaultColumnIdStyle: 'trimDash' //Make it accept _ spaced headers
          }
      });

      $('#remote').dynatable({
          dataset: {
              records: JSON.parse($('#blast').text()) //Parse
          }
      });
  });

束全体がJSFiddleで利用可能です

4

1 に答える 1

1

回答が少し遅れましたが、興味深い質問のように見えたので、ここに...

フィドル- _

Dynatable の内容を読みましたが、非定型の JSON ファイルの解析についてはあまり明確ではありませんでした。

すっごい…一からやりました。

基本的なテーブルは HTML であり、テーブルの行は本文に追加されます。ここでは 2 つの 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>");
}
于 2014-09-04T04:51:03.810 に答える